![]() |
1
884
JavaScript有两种数字类型:
最常用的数字类型,
这种类型的最大精确积分值是
从这个角度来看:1万亿字节就是1 PB(或1千TB)。 这里的“安全”是指准确表示整数并正确比较它们的能力。
为了安全地使用大于这个的整数,您需要使用
注意,按位运算符和移位运算符对32位整数进行运算,因此在这种情况下,最大安全整数为2 31
关于数字9007199254740992主题的技术说明:这个值有一个精确的IEEE-754表示,您可以从一个变量赋值和读取这个值,因此 非常小心 在一般情况下,您必须将此IEEE-754值视为不精确值,因为它是对逻辑值9007199254740992还是9007199254740993进行编码是不明确的。 |
![]() |
2
464
>=ES6:
< 从 the reference :
|
![]() |
3
112
是2
==9 007 199 254 740 992。这是因为
最小值为-2 53 . 这让一些有趣的事情发生了
也可能很危险:)
http://blog.vjeux.com/2010/javascript/javascript-max_int-number-limits.html |
![]() |
4
61
对于一些关于这个主题的问题,这可能已经足够了。 |
![]() |
5
41
Jimmy's answer -9007199254740992 到 包括在内(对不起9007199254740993,你可能认为你是9007199254740993,但你错了! 在下面或里面演示 jsfiddle
his answer 这将在28.56年内完成;),所以这里有一个稍微更有效的方法来实现这一点(准确地说,它比28.55999999968312年更有效:)以及 test fiddle :
|
![]() |
6
32
为了安全
推理
我想我应该聪明点,找到
我的机器每秒只能数到1000万。。。所以我会在28.56年后回帖给出最终答案。 如果你不能等那么久,我敢打赌
发现
|
![]() |
7
30
简而言之,这要视情况而定。 如果您在任何地方使用按位运算符(或者如果您指的是数组的长度),则范围是:
未签名:
签署:
签署:
消极的 0!) |
![]() |
8
29
ECMAScript 6:
|
![]() |
9
24
先前的许多答案都显示了结果
如果我们继续做积累呢:
9007199254740992 . 双精度64位二进制格式 在这上面工作。让我们看看怎么做 9007199254740992 用一个简短的版本来演示
在箭头的左边,我们有
位值1
基点
所有的位都设置为1,直到这个值等于1 9007199254740991 以十进制表示。
双精度64位二进制格式 ,它严格分配52位的分数,再加一个1就没有更多的位可以携带了,所以我们可以做的就是把所有的位都设回0,并对指数部分进行操作:
现在我们得到了 9007199254740992 ,如果数字大于它,格式可以保存的是 分数的2倍 双精度64位二进制格式 9007199254740992 :
所以当数字大于9007199254740992*2=18014398509481984时 只有 分数的4倍
中间的数字怎么样[ , 4 503 599 627 370 496 )?
基数点后的位值1正好是2^-1。(=1/2,=0.5) 所以当数字小于 4503599627370496 (2^52),有一个位可以表示 整数的1/2倍
少于 2251799813685248
还有什么是可用的范围 ? 格式为它分配了11位。 Wiki :(如需了解更多详细信息,请访问此处) [![在此处输入图像][1]
|
![]() |
10
13
其他人可能已经给出了一般性的答案,但我认为给出一个快速确定它的方法是个好主意:
这给我9007199254740992在不到毫秒的铬30。 它将测试2的幂次,以找出“加上”1时,哪一个等于他自己。 |
![]() |
11
8
控制台将告诉您0x80000000等于+2147483648,但0x80000000和0x80000000等于-2147483648。 |
![]() |
12
6
尝试:
在Firefox3.6中是2^31-1。 |
![]() |
13
6
在编写本文时,JavaScript正在接收一个新的数据类型:
而且,很明显,由于内存有限,总是会有精度限制,而且在分配必要内存和对如此大的数字执行运算时,也会花费时间。
|
![]() |
14
4
我用一个公式做了一个简单的测试,X-(X+1)=-1,在Safari、Opera和Firefox(在OSX上测试)上可以得到的X的最大值是9e15。以下是我用于测试的代码:
|
![]() |
15
3
我是这样写的:
int32相同
|
![]() |
16
3
我们到 sources
|
![]() |
17
0
在googlechrome内置的javascript中,在这个数字被称为无穷大之前,您可以转到大约2^1024。 |
![]() |
18
0
在JavaScript中,数字的表示是
|
![]() |
19
-1
十六进制小数是无符号正值,因此0x80000000=2147483648-这在数学上是正确的。如果要使其成为有符号值,则必须右移:0x80000000>0=-2147483648。你也可以写1<<31。 |
![]() |
20
-7
火狐3在处理大数据方面似乎没有问题。
野生动物园似乎也没有问题。(作为记录,如果其他人决定测试,这是在Mac上进行的。) 除非我在一天中的这个时候失去了大脑,否则这比64位整数大得多。 |
![]() |
21
-7
Node.jsGoogle Chrome似乎都使用1024位浮点值,因此:
|
![]() |
Softly · 单选按钮未按预期取值 1 年前 |
|
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
![]() |
assembler · Nextjs没有处理发布请求 1 年前 |
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |