为什么这个计算不会返回整数?

时间:2013-05-01 11:04:18

标签: javascript

console.log((57 / 100) * 100);

当我在Javascript中进行此数学运算时,它总是返回56.99999999。为什么它不是57.00000?

2 个答案:

答案 0 :(得分:4)

这与JavaScript处理浮点数的方式有关。看看这个主题:How to deal with floating point number precision in JavaScript?

答案 1 :(得分:2)

为了得到确切的答案,您需要使用整数,或使用小数库。 Javascript有一些十进制库,它们使用整数计算值,然后将值转换回十进制。例如,Javascript有BigNumber库。

原因是(57 / 100)部分在Javascript中返回 Float 或浮点数。 JavaScript使用64-bit floating point numbers,在大多数系统上,它提供53位精度来表示尾数或浮点数的数字部分(3.2e4中的3.2)。大多数系统使用IEEE-754浮点标准,它允许浮点运算的任何错误,只要它在最后一个位置小于一个单位(在IEEE-754 64位的情况下是第54位)位)。因此,所有浮动都被截断,舍入和/或截断,这就是结果返回小数的原因。

有关发生这种情况的详细信息,您还可以看到:Is floating point math broken?