JS中Number有什么类型的号码?

如果您学习过强类型语言,那么您应该理解一定值必须存储在内存中,并为其预先分配了多个字节。例如,为一个数字int 分配4个字节,该数字 等于32位并且可以包含2³²的值,这意味着我们可以用十进制表示从-2 147 483 647到2 147 483647。在JS中使用什么类型的数字?

EcmaScript标准说:Number Value:原始值,对应于双精度64位二进制格式IEEE 754值。也就是说,一个double 占用8个字节的数字 (双精度数字)= 64位(其中分配了1位来表示数字的符号,11位表示阶数,而52-尾数表示小数点后的所有内容)。

分配位代表双精度
分配位代表双精度

值范围:1.7E +/- 308(15位数字)。您可以通过在控制台中打印Number对象的最大允许数目来查看并完整查看此数目, Number.MAX_VALUE这是IEEE754标准的链接:https//en.wikipedia.org/wiki/IEEE_754如果超出此数目,那么Number将为我们提供一个值 Infinity...

最大浮点数两倍
最大浮点数两倍

,  double?

: 9,007,199,254,740,991 ~9 . , . Number: Number.MAX_SAFE_INTEGER.

, , :

大于最大允许整数的数字比较。 从数学上讲,这些值不是相等的,但我们将返回true。
, . , true.

,  isSafeInteger():

检查号码是否安全

, ,  double. , ? , , ,  int  4 , 8! , V8 Number:

数字的不同类别。 整数从Number继承
. Integer Number

, .  int  int32  Uint32 ( ±),  BigIntInteger   NumberInt32  Uint32   Integer.

gitHub': https://github.com/v8/v8/blob/master/include/v8.h#L3039

V8 C++ 4 . , V8 double 8 . , , .

我们动态更改了V8变量的类型
V8

Performance Tip for JS in v8 Chris Wilsonhttps://www.html5rocks.com/en/tutorials/speed/v8/

. JS — , API . ,  window.setTimeout(). JavaScript. setTimeout  int32, , 2 147 483 647, 9 .  setTimout()  2 147 483 648 ( 1  Int32), . JS . .

P.S. , setTimeout 25 . , .

谢谢大家,订阅我的VK页面,加入我们的前端开发爱好者小组




All Articles