使用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方法,强制保留小数点后多少位,例:
自定义数字运算方法,当需要进行数学运算的时候,不直接进行,调用自定义的方法进行,例:
(加法封装)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...