问一个浮点型数据问题啊!!!
有这样一堆代码:
float f1 = 5555.12f;
float f2 = 5555.23f;
printf("%f",f1+f2)
我期望的结果是:11110.350000
但是实际输出却是11110.350098
真搞不懂最后面的98哪里搞出来的。。。。。很无语啊
[解决办法]
float f1 = 5555.12f;
float f2 = 5555.23f;
printf("%7.2f\n",f1+f2);
用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
[解决办法]
- C/C++ code
int main(){ float f1 = 5555.12f; // 最接近的是5555.120117f float f2 = 5555.23f; // 最接近的是5555.229980f printf("%16f\n%16f\n",f1,f2); printf("%16f\n",f1+f2); return 0;}