Welche Art von Nummer hat Number in JS?

Wenn Sie stark typisierte Sprachen gelernt haben, sollten Sie verstehen, dass ein bestimmter Wert mit einer vorab zugewiesenen Anzahl von Bytes im Speicher gespeichert werden muss. Zum Beispiel werden int 4 Bytes für eine Zahl  zugewiesen, die 32 Bit entspricht und 2³²-Werte enthalten kann, was bedeutet, dass wir im Dezimalsystem von -2 147 483 647 bis 2 147 483 647 ausdrücken können. Welche Art von Zahl wird in JS verwendet?

Der EcmaScript-Standard besagt, dass Number Value: primitiver Wert, der einem IEEE 754-Wert im 64-Bit-Binärformat mit doppelter Genauigkeit entspricht. Das heißt, eine Zahl double ( Zahl mit  doppelter Genauigkeit), die 8 Bytes = 64 Bits belegt (von denen 1 Bit zugewiesen ist, um das Vorzeichen einer Zahl anzuzeigen, 11 Bits für die Reihenfolge und 52 - Mantisse, alles nach dem Dezimalpunkt).

Zuweisen von Bits zur Darstellung eines Doppels
Zuweisen von Bits zur Darstellung eines Doppels

Wertebereich: 1,7E +/- 308 (15 Stellen). Sie können diese Nummer vollständig überprüfen und Number.MAX_VALUEanzeigen, indem Sie die maximal zulässige Nummer des Number-Objekts in der Konsole ausdrucken Hier ist ein Link zum IEEE754-Standard:  https://en.wikipedia.org/wiki/IEEE_754 Wenn wir über diese Nummer hinausgehen, gibt Number uns einen Wert  Infinity...

Maximaler Gleitkomma-Doppelwert
Maximaler Gleitkomma-Doppelwert

,  double?

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

, , :

Vergleich von Zahlen, die größer als die maximal zulässige Ganzzahl sind.  Mathematisch sind dies nicht gleiche Werte, aber wir werden true zurückgeben.
, . , true.

,  isSafeInteger():

Überprüfen, ob eine Nummer sicher ist

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

Verschiedene Klassen für Zahlen.  Ganzzahl erbt von 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 . , , .

Wir haben den Typ der Variablen für V8 dynamisch geändert
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 . , .

Vielen Dank an alle, abonnieren Sie meine VK-Seite und schließen Sie sich unserer Gruppe von Fans der Frontend- Entwicklung an




All Articles