Maison > interface Web > js tutoriel > Pourquoi les grands nombres sont-ils mal arrondis dans l'analyse JavaScript JSON ?

Pourquoi les grands nombres sont-ils mal arrondis dans l'analyse JavaScript JSON ?

Mary-Kate Olsen
Libérer: 2024-12-17 15:27:10
original
358 Les gens l'ont consulté

Why Are Large Numbers Rounded Incorrectly in JavaScript JSON Parsing?

De grands nombres arrondis par erreur en JavaScript

Lors de l'analyse à l'aide de JSON.parse, les grandes valeurs numériques dans les chaînes JSON peuvent parfois être arrondies de manière incorrecte en JavaScript. Ce problème se produit car le type numérique de JavaScript a une capacité limitée, qui est décrite dans la spécification du format à virgule flottante binaire double précision IEEE-754.

JavaScript peut représenter avec précision des nombres jusqu'à environ 9007199254740991 (Number.MAX_SAFE_INTEGER). . Au-delà de cette valeur, le format perd en précision et les nombres peuvent être arrondis à la valeur représentable la plus proche.

Par exemple, le code suivant démontre ce comportement :

const jsonString = '{"id":714341252076979033,"type":"FUZZY"}';
const jsonParsed = JSON.parse(jsonString);
console.log(jsonString, jsonParsed);
Copier après la connexion

Une fois exécuté, la valeur de jsonParsed.id est incorrectement arrondi à 714341252076979100. En effet, la valeur d'origine, 714341252076979033, se trouve en dehors de la plage entière sûre.

Pour éviter ce problème, envisagez d'utiliser des représentations sous forme de chaîne pour les grandes valeurs numériques au lieu de nombres. Vous pouvez également utiliser le type de données BigInt dans ES2020, qui prend en charge les entiers arbitrairement grands. Cependant, notez que les valeurs BigInt ne peuvent pas être sérialisées nativement en JSON, vous devrez donc utiliser un sérialiseur/désérialiseur personnalisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal