算账的精度(JS 浮点数计算与四舍五入问题)

2019-05-26  本文已影响0人  LUGY

最近做一些算账问题,浮点数方面会出现错误,究其原因,JS对于number类型,在四则运算或调用toFixed这样的方法时,实际是使用的二进制形式进行计算,即计算的数值并非看到的十进制数值,所以结果总是不准确。

处理这类问题,一个方法是将小数全部倍数到整数,再缩小回小数,但在倍数化整数过程中(依然是四则运算)依然会出现精度错误,所以这种方法依然不准确。

总的来说,直接用浮点数在四则运算或toFiexed时都会出错,所以最彻底的方法是,将浮点数转换成字符串,记录小数点位置,去掉小数点,转换成整形,再用整形计算,计算结果转字符串,将小数点写回来,最后转成浮点数。这样无论四则运算还是四舍五入,都不会精度丢失。

上一篇下一篇

猜你喜欢

热点阅读