我有大量数值y
在 JavaScript 中。我想通过将它们四舍五入到最接近的倍数来对它们进行分组x
并将结果转换为字符串。
如何解决烦人的浮点精度?
例如:
0.2 + 0.4 = 0.6000000000000001
我尝试过两件事:
>>> y = 1.23456789
>>> x = 0.2
>>> parseInt(Math.round(Math.floor(y/x))) * x;
1.2000000000000002
and:
>>> y = 1.23456789
>>> x = 0.2
>>> y - (y % x)
1.2000000000000002
从这篇文章:JavaScript中如何处理浮点数精度? https://stackoverflow.com/questions/1458633/elegant-workaround-for-javascript-floating-point-number-problem
您有几个选择:
- 对小数使用特殊的数据类型,例如小数.js https://github.com/MikeMcl/decimal.js/
- 将结果格式化为固定数量的有效数字,如下所示:
(Math.floor(y/x) * x).toFixed(2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)