一些笔试、面试宝典之类的书,经常提到浮点数与零的比较。
大概是这样if(f - 0.0f < 0.0000001f){},意思是对浮点数的处理,应该是有一个精度值。
对这个问题,也会留意,但体会不深。
今天,总算让我碰到了。
比如说,一个在100:1下的数值A是10;转变为1000:1的时候,A应该变成B,B是1,但是在计算机保存的时候的数值B却是0.999768······(大概是这样的数)。(A、B都是float类型)
而在一个运算中,需要对B取整,本来,我的期望值是1,结果却是0。
另一个运算中,令B减去1,我的期望是0,结果却是-0.000232。
这两个错误,才让我深刻体会到浮点数的处理,应该有一个精度限制。