Que tipo de número o número tem em JS?

Se você estudou linguagens fortemente tipadas, deve entender que um determinado valor deve ser armazenado na memória com um número de bytes pré-alocados para ele. Por exemplo, int 4 bytes são alocados para um número  , que é igual a 32 bits e pode conter 2³² valores, o que significa que podemos expressar no sistema decimal de -2147 483 647 a 2 147 483 647. Que tipo de número é usado em JS?

O padrão EcmaScript diz que Number Value: valor primitivo correspondente a um valor IEEE 754 de formato binário de 64 bits de precisão dupla. Ou seja, um número double ( número de  precisão dupla) ocupando 8 bytes = 64 bits (dos quais 1 bit é alocado para indicar o sinal de um número, 11 bits para a ordem e 52 - mantissa, tudo após o ponto decimal).

Alocar bits para representar um duplo
Alocar bits para representar um duplo

Faixa de valor: 1,7E +/- 308 (15 dígitos). Você pode verificar e ver este número por completo imprimindo o número máximo permitido do objeto Número no console.  Number.MAX_VALUEAqui está um link para o padrão IEEE754:  https://en.wikipedia.org/wiki/IEEE_754 Se você for além desse número, o Número nos dará um valor  Infinity...

Valor máximo de ponto flutuante duplo
Valor máximo de ponto flutuante duplo

,  double?

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

, , :

Comparação de números maiores que o número inteiro máximo permitido.  Matematicamente, esses valores não são iguais, mas retornaremos true.
, . , true.

,  isSafeInteger():

Verificar se um número é seguro

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

Classes diferentes para números.  Inteiro herda de Número
. 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 . , , .

Alteramos dinamicamente o tipo da variável 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 . , .

Obrigado a todos, inscrevam-se na minha página VK e juntem - se ao nosso grupo de fãs de desenvolvimento de frontend




All Articles