【发布时间】:2011-03-27 05:25:12
【问题描述】:
为什么 JS 搞砸了这个简单的数学?
console.log(.1 + .2) // 0.3000000000000004
console.log(.3 + .6) // 0.8999999999999999
第一个示例大于正确结果,而第二个示例小于。 ???你如何解决这个问题?在执行操作之前,您是否必须始终将小数转换为整数?我是否只需要担心添加(* 和 / 在我的测试中似乎没有相同的问题)?
我已经在很多地方寻找答案。一些教程(如购物车表单)假装问题不存在,只是将值相加。大师们为各种数学函数提供了复杂的例程,或者顺便提到 JS“做得不好”,但我还没有看到解释。
【问题讨论】:
-
这个问题和每个与编程相关的论坛的数千个问题可能重复。
-
再来一次?!我们真的需要写一个常见问题解答。
-
@Andreas:我做到了。请参阅我的答案中的链接。
-
应该有一个特殊的处理程序来处理包含字符串 9999999 的问题。
标签: javascript math floating-point addition decimal