float a=***********.111;
float b1=***********.777;
float c=a+b1;
float c1=FLT_MAX;
printf("%f\n%f",c,c1);
Result=***********.000000
Float max=340282346638528860000000000000000000000.0
float是不是指小数点前后6位有效数字的,还是其他意思?他为什么有些可以表示的范围那么大,可却可以运算的位数很没那么多,因为数字长了感觉后几位是随机的 ,即使换成%lf也不正常
參考答案:float是32位的,为什么可以表示那么多而且比2^32还要多。32位的长度的数据可以表示整数个数为0x***********个,而浮点数是有其格式的首先bit31为符号位,bit30-bit23为介码,bit22-bit0是尾数既小数点后的数。
设介码数为P位,尾数M位,采用二进制表示尾数。那么可表示数的个数为
2^P*2^M*(1/2) = 2^8*2^23*1/2个。
其可以表示最大的数是
2^(2^8 - 1)*(1 - 2^(-23)),这就是为啥那么大了