javascript - 什么是JavaScript的最高整数值,数字可以达到而不会丢失精度?

这是由语言定义的吗?是否有定义的最大值?在不同的浏览器中它是不同的吗?


最佳答案:

+/-9007199254740991
ECMA Section 8.5 - Numbers
请注意,所有大小不大于253的正整数和负整数都可以用数字类型表示(实际上,整数0有两种表示形式,+0和−0)。
它们是64位浮点值,最大的精确整数值是253-1或9007199254740991。在ES6中,这被定义为Number.MAX_SAFE_INTEGER
请注意,位运算符和移位运算符对32位整数进行操作,因此在这种情况下,最大安全整数为231-1或2147483647。
测试一下!

var x = 9007199254740992;
var y = -x;
x == x + 1; // true !
y == y - 1; // also true !
// Arithmetic operators work, but bitwise/shifts only operate on int32:
x / 2;      // 4503599627370496
x >> 1;     // 0
x | 1;      // 1

关于数字9007199254740992主题的技术说明:该值有一个确切的IEEE-754表示,您可以从变量中分配和读取该值,因此对于在小于或等于该值的整数域中精心选择的应用程序,您可以将其视为是一个最大值。
在一般情况下,必须将此IEEE-754值视为不精确值,因为它对逻辑值9007199254740992或9007199254740993的编码不明确。