当前位置: 代码迷 >> 汇编语言 >> 关于浮点小数的有关问题
  详细解决方案

关于浮点小数的有关问题

热度:214   发布时间:2016-05-02 04:33:20.0
关于浮点小数的问题
使用VC写代码发现
float a = 0;
float b = a + 0.01;

的时候 b != 0.01 ,而是等于一个接近0.01的数.
为什么会这样呢?
------解决方案--------------------
如果有时间的话 建议去看看 IEEE 754
------解决方案--------------------
一颗小红星居然不知道?
因为0.1对于二进制来说,是一个彻头彻尾的无限循环小数。
换一句话说,0.1在计算机内部用浮点数表示的话,只能用近似值表示。
------解决方案--------------------
引用:
使用VC写代码发现
float a = 0;
float b = a + 0.01;

的时候 b != 0.01 ,而是等于一个接近0.01的数.
为什么会这样呢?


这是因为b是float,而这个常数0.01默认是double,二者的精度不一样,而0.01作为浮点数又不能精确表达,所以就造成了float 0.01 <> double 0.01。
你如果这样比较:
if (b == (float)0.01) ...
就没有问题。

------解决方案--------------------
如上回答!!
------解决方案--------------------
http://bbs.csdn.net/topics/390676437
  相关解决方案