1107 Stimmen

Was ist der höchste ganzzahlige Wert in JavaScript, den eine Zahl erreichen kann, ohne an Präzision zu verlieren?

Ist dies in der Sprache festgelegt? Gibt es ein bestimmtes Maximum? Ist es in verschiedenen Browsern unterschiedlich?

3voto

simhumileco Punkte 26451

Kommen wir zu den Quellen

Beschreibung

El MAX_SAFE_INTEGER Konstante hat einen Wert von 9007199254740991 (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) y 2^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 als Number.MAX_SAFE_INTEGER und nicht als Eigenschaft einer Nummer Objekt, das Sie erstellt haben.

Browser-Kompatibilität

enter image description here

1voto

Marwen Trabelsi Punkte 4041

0voto

MRJAHID Punkte 105

Wie Finde maximalen Integer-Wert

console.log(2 ** 53 - 1);
console.log(Number.MAX_SAFE_INTEGER);

Leistung : 9007199254740993

enter image description here

-1voto

Tommy Punkte 101

Im eingebauten Javascript von Google Chrome kann man bis etwa 2^1024 gehen, bevor die Zahl unendlich genannt wird.

-2voto

SammieFox Punkte 548

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X