Heim > Web-Frontend > js-Tutorial > Warum werden große Zahlen beim JavaScript-JSON-Parsing falsch gerundet?

Warum werden große Zahlen beim JavaScript-JSON-Parsing falsch gerundet?

Mary-Kate Olsen
Freigeben: 2024-12-17 15:27:10
Original
362 Leute haben es durchsucht

Why Are Large Numbers Rounded Incorrectly in JavaScript JSON Parsing?

Große Zahlen werden in JavaScript fälschlicherweise gerundet

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage