读书人

问一个浮点型数据有关问题啊

发布时间: 2012-07-29 15:26:14 作者: rapoo

问一个浮点型数据问题啊!!!
有这样一堆代码:
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;} 

读书人网 >C++

热点推荐