Quel type de nombre possède Number dans JS?

Si vous avez étudié des langages fortement typés, vous devez comprendre qu'une certaine valeur doit être stockée en mémoire avec un certain nombre d'octets pré-alloués pour elle. Par exemple, int 4 octets sont alloués pour un nombre  , qui est égal à 32 bits et peut contenir 2³² valeurs, ce qui signifie que nous pouvons exprimer dans le système décimal de -2 147 483 647 à 2 147 483 647. Quel type de nombre est utilisé dans JS?

La norme EcmaScript indique que Number Value: valeur primitive correspondant à une valeur IEEE 754 au format binaire 64 bits double précision. Autrement dit, un nombre double ( nombre à  double précision) occupant 8 octets = 64 bits (dont 1 bit est alloué pour indiquer le signe d'un nombre, 11 bits pour l'ordre et 52 - mantisse, tout après le point décimal).

Allouer des bits pour représenter un double
Allouer des bits pour représenter un double

Plage de valeurs: 1,7E +/- 308 (15 chiffres). Vous pouvez vérifier et voir ce nombre dans son intégralité en imprimant le nombre maximum autorisé de l'objet Number dans la console.  Number.MAX_VALUEVoici un lien vers la norme IEEE754:  https://en.wikipedia.org/wiki/IEEE_754 Si vous dépassez ce nombre, Number nous donnera une valeur  Infinity...

Valeur double maximale à virgule flottante
Valeur double maximale à virgule flottante

,  double?

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

, , :

Comparaison des nombres supérieurs à l'entier maximum autorisé.  Mathématiquement, ce ne sont pas des valeurs égales, mais nous retournerons true.
, . , true.

,  isSafeInteger():

Vérifier si un numéro est sûr

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

Différentes classes pour les nombres.  Integer hérite 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 . , , .

Nous avons changé dynamiquement le type de la variable pour 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 . , .

Merci à tous, abonnez-vous à ma page VK et rejoignez notre groupe de fans de développement frontend




All Articles