使用VC写代码发现
float a = 0;
float b = a + 0.01;
的时候 b != 0.01 ,而是等于一个接近0.01的数.
为什么会这样呢?
------解决方案--------------------
如果有时间的话 建议去看看 IEEE 754
------解决方案--------------------
一颗小红星居然不知道?
因为0.1对于二进制来说,是一个彻头彻尾的无限循环小数。
换一句话说,0.1在计算机内部用浮点数表示的话,只能用近似值表示。
------解决方案--------------------
这是因为b是float,而这个常数0.01默认是double,二者的精度不一样,而0.01作为浮点数又不能精确表达,所以就造成了float 0.01 <> double 0.01。
你如果这样比较:
if (b == (float)0.01) ...
就没有问题。
------解决方案--------------------
如上回答!!
------解决方案--------------------
http://bbs.csdn.net/topics/390676437