JS精度丢失问题
2023-10-06 本文已影响0人
xsmile21
今天遇到了一个有趣的事,分享给大家:
乘法:
0.28和0.29乘以100都没有达到预期的值
除法:
0.28除以100没有达到预期的值,但是0.29正常
原因:
浮点数不能直接进行相等比较,计算机中是采用近似值来保存浮点数的,当进行浮点数相关的计算时,需要时刻提防由于精度问题所导致的误差,并注意避免那些会影响到结果正确性的误差(所谓正确性,就是误差超出了所允许的最大范围)。
解决:
// 仅供元转分这种使用场景参考
parseInt(0.28 * 100 + 0.1) // 其中加0.1是解决.29*100=28.9xxx的问题