我在处理JavaScript数字时发现了以下奇怪的行为。
这里发生了什么?我知道 JavaScript 只能表示最大数量为
如果
var baseNum = Math.pow(2, 53);
console.log(baseNum); //prints 9007199254740992
console.log(baseNum + 1); //prints 9007199254740992 again!
console.log(baseNum + 2); //prints 9007199254740994, 2 more than +1
console.log(baseNum + 3) // prints 9007199254740996, 2 more than +2
console.log(baseNum + 4) // prints 9007199254740996, same as +3
这里发生了什么?我知道 JavaScript 只能表示最大数量为
2^53
的数字(它们在内部是“double”类型的),但为什么会出现这种情况?如果
2^53
是实际上的最大值,那么为什么我们有 Number.MAX_VALUE
(1.7976931348623157e+308
)呢?
var base
,然后其他地方都用baseNum
? - Marc B