这是由语言定义的吗?有确定的最大值吗?在不同的浏览器中是否有所不同?
当前回答
在JavaScript中,数字的表示是2^53 - 1。
然而,按位操作是在32位(4个字节)上计算的,这意味着如果你超过32位移位,你将开始丢失位。
其他回答
的wrotes:
任何你想用于位操作的东西都必须在 0x80000000(-2147483648或-2^31)和0x7fffffff(2147483647或2^31 - 1)。 控制台会告诉您0x80000000等于+2147483648,但是 0x80000000 & 0x80000000 = -2147483648
十六进制小数是无符号的正数值,因此0x80000000 = 2147483648 -这在数学上是正确的。如果你想让它成为一个带符号的值,你必须右移:0x80000000 >> 0 = -2147483648。你也可以写成1 << 31。
要用于位操作的任何值必须在0x80000000(-2147483648或-2^31)和0x7fffffff(2147483647或2^31 - 1)之间。
控制台会告诉您0x80000000等于+2147483648,但是0x80000000 & 0x80000000等于-2147483648。
>= ES6:
Number.MIN_SAFE_INTEGER;
Number.MAX_SAFE_INTEGER;
< = ES5
参考文献:
Number.MAX_VALUE;
Number.MIN_VALUE;
console.log (MIN_VALUE, Number.MIN_VALUE); console.log (MAX_VALUE, Number.MAX_VALUE); console.log (MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);/ / ES6 console.log (MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);/ / ES6
在JavaScript中,数字的表示是2^53 - 1。
然而,按位操作是在32位(4个字节)上计算的,这意味着如果你超过32位移位,你将开始丢失位。
JavaScript有两种数字类型:number和BigInt。
最常用的数字类型是一个64位浮点IEEE 754数字。
这种类型的最大精确整数值是Number。MAX_SAFE_INTEGER,即:
253 - 1 +/- 9,007,199,254,740,991,或 九千亿亿七千亿九千九百零五十四万四千九百九十一
从这个角度来看:1千万亿字节是1拍字节(或1千兆字节)。
在此上下文中,“安全”指的是准确表示整数并正确比较它们的能力。
来自规范:
注意所有大小为no的正整数和负整数 在Number类型中可以表示大于253的 整数0有两种表示,+0和-0)。
为了安全地使用大于此值的整数,您需要使用BigInt,它没有上界。
注意,位操作符和移位操作符作用于32位整数,因此在这种情况下,最大安全整数是231-1,即2,147,483,647。
Const log = console.log Var x = 9007199254740992 Var y = -x Log (x == x + 1) // true ! Log (y == y - 1) //也成立! //算术运算符有效,但位/移位只对int32运算 Log (x / 2) // 4503599627370496 Log (x >> 1) // 0 Log (x | 1) // 1
关于数字9,007,199,254,740,992的技术注意事项:这个值有一个精确的IEEE-754表示,您可以从变量中赋值和读取这个值,因此对于在小于或等于该值的整数领域中非常仔细选择的应用程序,您可以将其视为最大值。
在一般情况下,必须将此IEEE-754值视为不精确值,因为它是对逻辑值9,007,199,254,740,992还是9,007,199,254,740,993进行编码是不明确的。
推荐文章
- 在React Native中使用Fetch授权头
- 为什么我的球(物体)没有缩小/消失?
- 如何使用jQuery检测页面的滚动位置
- if(key in object)或者if(object. hasownproperty (key)
- 一元加/数字(x)和parseFloat(x)之间的区别是什么?
- angularjs中的compile函数和link函数有什么区别
- 删除绑定中添加的事件监听器
- 很好的初学者教程socket.io?
- HtmlSpecialChars在JavaScript中等价于什么?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- Numpy Max vs amax vs maximum
- 我如何等待一个承诺完成之前返回一个函数的变量?
- 在JavaScript中根据键值查找和删除数组中的对象