真实的执行结果
parseFloat(0.01)+parseFloat(0.09)=0.09999999999999999
parseFloat(0.0101)+parseFloat(0.0909)=0.10099999999999999
parseFloat(0.0109)+parseFloat(0.0901)=0.101
parseFloat(0.09)+parseFloat(0.01)=0.09999999999999999
突然感觉我的数学好差。。。。。。。
有没有人帮我纠正一下三观
parseFloat(0.009)+parseFloat(0.001)=0.009999999999999998
parseFloat(0.0009)+parseFloat(0.0001)=0.001
浮点数都会有精度问题.要想在运算中部出错,你可以使用小数.decimal
浮点数移位机内表示方法的问题.不管是在表示还是运算时,都会出现误差
decimal 类型就可以实现了,你要知道,float表达小数是不准确的,只能正确表达0.5 0.25 0.125 这些相加的数
为什么同样是末尾9和末尾1,有两个是准确的呢?
@王者永乐: 我只能说你是没事闲的,一个少了点,一个多了点,相加不就正好了!
因为计算的时候是要先转成二进制的所以都有偏差
转二进制貌似所有的运算都会转,但是为什么偏偏float出差错呢
@王者永乐: 你 可以看看我的文章
http://www.cnblogs.com/bjjjunjie/p/3948766.html
@王者永乐: 只有有小数点的情况下才会出问题