今天遇到一个问题
代码为
#include<stdio.h>
void main(){
float a;
a=555555.55;
printf("%f\n",a);
}
我认为输出是555555.55000000
但实际结果为
研究了一下IEEE-754关于浮点数的标准规定,是要将十进制小数表示成二进制小数。0.55的二进制表示为0.100011000110001(无限循环)。无限循环的情况下要将循环项切除,那么只剩0.10001,将此再换成十进制表示即为1/2+1/16=0.5625。