为什么当值是0.5时Math.round()不四舍五入?

时间:2020-01-27 16:16:50

标签: javascript floating-point rounding-error

当前有一个基本上看起来像这样的公式:

Math.round((20.49-14.99)*5);

结果数字为27.5,并且AFAIK,Math.round()应该在数字等于或大于0.5时向上舍入,而在数字小于或等于0.5时则舍入。除非我有误解,否则我假设结果会四舍五入到28(例如,在Microsoft Excel中是这样),但是取整到27。

起初,我以为它与我的代码有关,但是当我用控制台记录它时,结果是完全一样的。

我是否缺少某些东西,如果有的话,我将如何从0.5开始向上取整?

2 个答案:

答案 0 :(得分:1)

由于浮点的工作方式,(20.49-14.99)*5的结果实际上是27.499999999999993,比28更接近27

答案 1 :(得分:0)

(20.49-14.99)*527.499999999999993,因此JavaScript会将其舍入为更接近的值。您应该使用Math.ceil来舍入以上值