1 + 0.72 = 1.72,但2 + 0.72 = 2.7199999999999998为什么?

时间:2013-08-21 12:04:41

标签: javascript

我正在研究一个项目,我发现了一些奇怪的值。我做了一些带有各种输入值的测试,并最终得到了 - 在我看来 - 奇怪的行为:

1 + 0.72 = 1.72 // expecting 1.72
2 + 0.72 = 2.7199999999999998 // 2.72
1 + 1.72 = 2.7199999999999998 // 2.72
1 + 2.72 = 3.72 // 3.72
1 + 3.72 = 4.720000000000001 // 4.72

有没有人知道发生了什么以及如何防止这种情况,也就是说,我如何确保得到我所期待的?

1 个答案:

答案 0 :(得分:0)

修复它的一种方法是:

parseFloat(val.toFixed(2))