Beim Parsen mit JSON.parse können große numerische Werte in JSON-Strings in JavaScript manchmal falsch gerundet werden. Dieses Problem tritt auf, weil der Zahlentyp von JavaScript eine begrenzte Kapazität hat, die in der IEEE-754-Spezifikation für das binäre Gleitkommaformat mit doppelter Genauigkeit beschrieben ist.
JavaScript kann Zahlen bis zu ungefähr 9007199254740991 (Number.MAX_SAFE_INTEGER) genau darstellen. . Über diesen Wert hinaus verliert das Format an Präzision und Zahlen werden möglicherweise auf den nächsten darstellbaren Wert gerundet.
Zum Beispiel zeigt der folgende Code dieses Verhalten:
const jsonString = '{"id":714341252076979033,"type":"FUZZY"}'; const jsonParsed = JSON.parse(jsonString); console.log(jsonString, jsonParsed);
Bei der Ausführung wird der Wert angezeigt von jsonParsed.id wird fälschlicherweise auf 714341252076979100 gerundet. Dies liegt daran, dass der ursprüngliche Wert 714341252076979033 liegt außerhalb des sicheren Ganzzahlbereichs.
Um dieses Problem zu vermeiden, sollten Sie die Verwendung von Zeichenfolgendarstellungen für große numerische Werte anstelle von Zahlen in Betracht ziehen. Alternativ können Sie in ES2020 den Datentyp BigInt verwenden, der beliebig große Ganzzahlen unterstützt. Beachten Sie jedoch, dass BigInt-Werte nicht nativ in JSON serialisiert werden können, sodass Sie einen benutzerdefinierten Serialisierer/Deserialisierer verwenden müssen.
Das obige ist der detaillierte Inhalt vonWarum werden große Zahlen beim JavaScript-JSON-Parsing falsch gerundet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!