gpt4 book ai didi

javascript - JavaScript 中的最大整数值

转载 作者:可可西里 更新时间:2023-11-01 01:31:46 24 4
gpt4 key购买 nike

我正在阅读 second chapter of the book Eloquent JavaScript .作者声明:

Any whole number less than 2^52 (which is more than 10^15) will safely fit in a JavaScript number.

我从 wikipedia 中获取了 2^52 的值.

4,503,599,627,370,496

该值必须小于 2^52,所以我从初始值中减去 1;

var max = 4503599627370495;

定义最大变量后,我检查值是多少(我使用的是 Chrome 32.0.1700.77)。

console.log(max); // 4503599627370495

我想看看当我超过这个限制时会发生什么,所以我添加了几次。

没想到:

max += 1;
console.log(max); // 4503599627370496
max += 1;
console.log(max); // 4503599627370497
max += 1;
console.log(max); // 4503599627370498

我超出了限制,但计算仍然很精确。

我尝试了下一个2的幂,2^53,这次我没有减1:

9,007,199,254,740,992

var max = 9007199254740992;

这似乎是一个更大的限制,似乎我可以很安全地加减数字:

max += 1;
console.log(max); // 9007199254740992
max += 1;
console.log(max); // 9007199254740992
max -= 1;
console.log(max); // 9007199254740991
max += 1;
console.log(max); // 9007199254740992
max -= 900;
console.log(max); // 9007199254740092
max += 900;
console.log(max); // 9007199254740992

我可以为最大值分配一个更大的值,但是它会失去精度并且我无法再次安全地添加或减去数字。

能否请您准确解释引擎盖下的机制?举例说明超过 2^52 后位会发生什么情况会非常有帮助。

最佳答案

这不是强类型编程语言。 JS 有一个对象 Number。你甚至可以得到一个无限的数字:document.write(Math.exp(1000));

document.write(Number.MIN_VALUE + "<br>");
document.write(Number.MAX_VALUE + "<br>");

document.write(Number.POSITIVE_INFINITY + "<br>");
document.write(Number.NEGATIVE_INFINITY + "<br>");

alert([
Number.MAX_VALUE/(1e293),
Number.MAX_VALUE/(1e292),
Number.MAX_VALUE/(1e291),
Number.MAX_VALUE/(1e290),
].join('\n'))

希望这是一个有用的答案。谢谢!

更新:最大整数是 - +/- 9007199254740992

关于javascript - JavaScript 中的最大整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com