热门
join now

【WD】0.1 + 0.2 为什么不等于 0.3

编程相关5个月前更新 云程
18 0 0

使用JavaScript解释。[玫瑰]
计算机内部存储数据使用2进制存储,两个数字进行的数学运算,首先是将这两个数字以2进制形式,存储在计算机内部,然后在计算机内部使用两个2进制数字进行计算,最后将计算结果的2进制数字转为10进制展示出来。

由于10进制的小数在转2进制的时候,规则是小数部分乘以2,判断是否得到一个整数,如果得到整数,转换完成;如
果没有得到整数,则继续乘以2判断。所以,0.1和0.2在转换2进制的时候,其实是一个无限死循环,也就是一直乘以2没有得到整数的时候,但计算机内部对于无线死循环的数据,会根据一个标准保留52位。也就是说,计算机内部在存储0.1和0.2的时候,本来就不精准,两个不精准的小数在计算后,距离精准的结果是有一定误差的。
项目中碰到这种情况,有3种处理方法:

将小数乘以10的倍数,转为整数,然后计算,计算完成后,再缩小10的倍数,例如:

使用数字的toFixed方法,强制保留小数点后多少位,例:

自定义数字运算方法,当需要进行数学运算的时候,不直接进行,调用自定义的方法进行,例:
(加法封装)

【WD】0.1 + 0.2 为什么不等于 0.3
【WD】0.1 + 0.2 为什么不等于 0.3
【WD】0.1 + 0.2 为什么不等于 0.3
【WD】0.1 + 0.2 为什么不等于 0.3
【WD】0.1 + 0.2 为什么不等于 0.3
【WD】0.1 + 0.2 为什么不等于 0.3

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...