【问题标题】:Json max int numberJson 最大整数
【发布时间】:2018-04-21 15:44:58
【问题描述】:

请告诉我,如何从 json 中获取数字,为什么数字末尾会出现零?

var a = '{ "n": 870744036720833075 }';
var json = JSON.parse(a);

document.getElementById('test').innerHTML = json.n; // 870744036720833000 why?

我该如何解决这个问题?

【问题讨论】:

标签: javascript json


【解决方案1】:

这个整数超过了 Javascript 认为的安全整数。您可以通过运行Number.isSafeInteger(870744036720833075) 来测试它,这将返回false。 因此,该数字以最大可用精度存储。

有关最大安全整数的说明,请参阅 here。可以在文档中注意到这样做的副作用。

在这种情况下,安全是指表示整数的能力 准确并正确地比较它们。例如, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 将 评估为真,这在数学上是不正确的。看 Number.isSafeInteger() 了解更多信息。

这意味着从 Javascript 的角度来看,您正在创建的数字和它给您的数字将与同一事物进行比较。

更新

要存储数字,您必须将其视为字符串。将您的 json 更改为 var a = '{ "n": "870744036720833075" }';

如果你需要对它们进行数学运算,你可以找到一些对字符串编码的数字进行数学运算的 Javascript 库,例如 strint,或者 cmets 中建议的那些。

更新

如果您从外部 api 获取此信息,则必须自己解析 JSON。 This 答案对您来说可能是一个好的开始。

【讨论】:

  • 谢谢,我明白了,但是div的个数怎么才能得到呢?
  • 我添加了更新,但基本上,您必须将其视为字符串。
猜你喜欢
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2012-11-10
相关资源
最近更新 更多