¿Qué tipo de número tiene Number en JS?

Si ha estudiado lenguajes fuertemente tipados, debe comprender que un determinado valor debe almacenarse en la memoria con un número de bytes preasignado para él. Por ejemplo, se int asignan 4 bytes para un número  , que es igual a 32 bits y puede contener valores 2³², lo que significa que podemos expresar en el sistema decimal de -2 147 483 647 a 2 147 483 647. ¿Qué tipo de número se usa en JS?

El estándar EcmaScript dice que Valor numérico: valor primitivo correspondiente a un valor IEEE 754 de formato binario de 64 bits de doble precisión. Es decir, un número double ( número de  doble precisión) que ocupa 8 bytes = 64 bits (de los cuales se asigna 1 bit para indicar el signo de un número, 11 bits para el pedido y 52 - mantisa, todo después del punto decimal).

Asignar bits para representar un doble
Asignar bits para representar un doble

Rango de valores: 1,7E +/- 308 (15 dígitos). Puede comprobar y ver este número en su totalidad imprimiendo el número máximo permitido del objeto Number en la consola.  Number.MAX_VALUEAquí hay un enlace al estándar IEEE754:  https://en.wikipedia.org/wiki/IEEE_754 Si va más allá de este número, Number nos dará un valor  Infinity...

Valor doble máximo de coma flotante
Valor doble máximo de coma flotante

,  double?

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

, , :

Comparación de números que son mayores que el número entero máximo permitido.  Matemáticamente, estos no son valores iguales, pero devolveremos verdadero.
, . , true.

,  isSafeInteger():

Comprobando si un número es seguro

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

Diferentes clases de números.  Integer hereda de 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 . , , .

Cambiamos dinámicamente el tipo de variable para 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 . , .

Gracias a todos, suscríbete a mi página VK y únete a nuestro grupo de fanáticos del desarrollo frontend




All Articles