Ist dies in der Sprache festgelegt? Gibt es ein bestimmtes Maximum? Ist es in verschiedenen Browsern unterschiedlich?
Antworten
Zu viele Anzeigen?Kommen wir zu den Quellen
Beschreibung
El
MAX_SAFE_INTEGER
Konstante hat einen Wert von9007199254740991
(9.007.199.254.740.991 oder ~9 Billiarden). Der Grund für diese Zahl ist, dass JavaScript Folgendes verwendet Zahlen im doppelpräzisen Gleitkommaformat wie angegeben in IEEE 754 und kann nur Zahlen zwischen-(2^53 - 1)
y2^53 - 1
.Sicher bezieht sich in diesem Zusammenhang auf die Fähigkeit, ganze Zahlen exakt darzustellen und korrekt zu vergleichen. Zum Beispiel,
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2
wird als wahr ausgewertet, was mathematisch nicht korrekt ist. Siehe Number.isSafeInteger() für weitere Informationen.Denn
MAX_SAFE_INTEGER
ist eine statische Eigenschaft von Nummer verwenden Sie es immer alsNumber.MAX_SAFE_INTEGER
und nicht als Eigenschaft einer Nummer Objekt, das Sie erstellt haben.
Browser-Kompatibilität
Scato wrotes:
alles, was Sie für bitweise Operationen verwenden wollen, muss zwischen 0x80000000 (-2147483648 oder -2^31) und 0x7fffffff (2147483647 oder 2^31 - 1).
die Konsole sagt Ihnen, dass 0x80000000 gleich +2147483648 ist, aber 0x80000000 & 0x80000000 ist gleich -2147483648
Hex-Dezimale sind positive Werte ohne Vorzeichen, also 0x80000000 = 2147483648 - das ist mathematisch korrekt. Wenn Sie daraus einen vorzeichenbehafteten Wert machen wollen, müssen Sie ihn nach rechts verschieben: 0x80000000 >> 0 = -2147483648. Sie können stattdessen auch 1 << 31 schreiben.