javascript - JSON 解析将某个数字转换为其他数字

标签 javascript json

<分区>

我发现一些数字在通过 parseInt 时会变成另一个数字。

console.log( parseInt( 10153315281647662, 10 ) ); //10153315281647662
console.log( parseInt( 10153315281647663, 10 ) ); //10153315281647664
console.log( parseInt( 10153315281647664, 10 ) ); //10153315281647664
console.log( parseInt( 10153315281647665, 10 ) ); //10153315281647664
console.log( parseInt( 10153315281647666, 10 ) ); //10153315281647666
console.log( parseInt( 10153315281647667, 10 ) ); //10153315281647668
console.log( parseInt( 10153315281647668, 10 ) ); //10153315281647668
console.log( parseInt( 10153315281647669, 10 ) ); //10153315281647668
console.log( parseInt( 10153315281647660, 10 ) ); //10153315281647660


var str = '{ "id" : 10153315281647663 }';
console.log(  JSON.parse( str ) ) // id : 10153315281647664

我正在处理几个大数字,parseInt 或将 str 更改为带有数字的 JSON 正在更改结果中的数字。这不是因为整数堆栈溢出,因为较大的数字 10153315281647666 被正确解析而 10153315281647663 不是,这背后的原因可能是什么?

我已经通过将所有内容解析为字符串解决了这个问题,但这是什么原因呢?

最佳答案

您尝试解析的数字太大。它can't be reliably stored作为 double float

console.log(10153315281647663 > Number.MAX_SAFE_INTEGER);
console.log(10153315281647663);
console.log(Number.MAX_SAFE_INTEGER);

关于javascript - JSON 解析将某个数字转换为其他数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548526/

相关文章:

javascript - 将文本从大写形式转换为 div 内的大写形式

javascript - 更新 mongoose schema.save 中的 `let` 变量

javascript - 如何迭代对象文字数组以查找匹配的属性?

ios - Mantle - 映射嵌套数据结构

json - 将大型多嵌套 json 解析为 scala 案例类

c# - 我可以反序列化 JSON 中的特定字段吗?

javascript - 如何在水平窗口调整大小时缩小网页的边距?

JavaScript:使用点符号与括号符号时的不同行为

javascript - 我的 javaScript 代码中的语法错误是什么?

javascript - 将字符串值解析为对象