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);
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!