已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
30分钟前关闭
Improve this question
所以我有一个JavaScript脚本,它在一个循环中将小分数加在一起,它可能会将0.2加到0.1。然后,该值被馈送到另一个函数,但问题是我需要精确地馈送0.3,而不是0.3000000000004。
什么是最简单的方法来确保数字是正确的和准确的。请注意,它可能得到0.25+0.125等被添加到简单的四舍五入到1小数不会解决这个问题。
也有可能增加0.2 + 0.10000000000004,尽管这是非常非常不可能的!
2条答案
按热度按时间5uzkadbs1#
在通用浮点运算中,没有简单的方法可以避免舍入误差。数字
0.3
没有精确的二进制浮点表示。我建议您阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic来熟悉浮点数表示所固有的权衡。
为了真正解决你的问题,你应该问自己几个问题:
0.30000000000000004
在你的误差范围之外?对结果进行四舍五入是否可以接受?BigDecimal
?最终,当涉及到浮点精度问题时,您通常必须根据特定问题提出的要求定制解决方案。
eagi6jfj2#
我用的是这个:
您可以通过更改'100'值来调整浮点精度。
你总是可以把它放在一个很好的函数上:D
注意:我在Unity Engine(C#)中使用它。