模数计算中的奇怪结果

时间:2013-08-21 17:40:40

标签: javascript math

-224 / -37.333333333333336 = 6
-224 % -37.333333333333336 = -37.33333333333332
(-224 / -37.333333333333336) % 1 = 0

如果第一个结果为%,为什么0不会返回6

为什么第三次计算中的结果不是float

1 个答案:

答案 0 :(得分:4)

JavaScript中的所有数字都是64位浮点数。仅仅因为它没有显示数字0.0并不意味着它不是双倍的。

根据WolframAlpha的说法:

-224 / -37.333333333333336 = 5.9999999999999995714285...

由于浮点除法的精度限制/舍入,因此除法在JavaScript中得到6。

然而,模运算正确地看出-37.3 ...不太适合-224六次。这意味着除法之后剩余的99.99%的-37.33 ......是剩余的,它对应于模运算的结果。

因此,你得到几乎,但不完全是,除数。