JSON.parse错误地解析/转换大数,并且总是舍入值

时间:2019-01-02 06:18:15

标签: jquery json ajax

我从int的API id_post接收了此字符串:

1080281724263649280

当我使用JSON.parse时,我收到:

1080281724263649300

为什么值不相同并且总是四舍五入?

为什么在localhost中输入正确的值,而在服务器中输入正确的值?

请帮助之前非常感谢

1 个答案:

答案 0 :(得分:1)

因为您的电话号码太大:

var x = `{ "z" : 1080281724263649280 }`
var y = 1080281724263649280;

console.log(
  JSON.parse(x)
)
console.log(Number.MAX_SAFE_INTEGER)
console.log(y)

// -------------------------------------

// A workaround: Convert to string before parsing
x = x.replace(/:\s+(\d{15,})/g,`: "$1"`)

// or using ES6 syntax which I find unnecessarily verbose here
// x = x.replace(/:\s+(?<num>\d{15,})/g,`: "$<num>"`)

console.log(
  JSON.parse(x)
)