【问题标题】:Number displays in scientific notation [duplicate]以科学计数法显示数字[重复]
【发布时间】:2015-03-12 22:09:13
【问题描述】:

我收到一个带有我的数据的 json 响应,但是当我尝试使用其中一个值(数字)时,响应正在转换为科学记数法。我从来没有遇到过这样的事情,所以我只想发布正在发生的事情。

当我使用console.log(response) 时,值看起来像doctorid":2015031216033174968087,而当我尝试使用医生ID 时,值变为2.015031216033175e+21。即使我使用console.log(response.doctorid) 在控制台中输出值也会发生这种情况。知道什么可能导致这种行为吗?

【问题讨论】:

  • Javascript 数字没有那么精确。
  • 我已经启动并运行了一年多的代码,但没有出现这个问题......
  • 那么您的数字可能较小。
  • 我的号码始终遵循相同的模式

标签: javascript jquery json


【解决方案1】:

与 python 和 ruby​​ 不同,Javascript 不支持任意精度整数。 JS中可以精确表示的最大数值是9007199254740991。较大的数字具有近似表示,并使用科学记数法转换为字符串。

在您的情况下,避免这种情况的唯一方法是将 ID 编码为 JSON 中的字符串:

"doctorid": "2015031216033174968087"

【讨论】:

  • “大于此的数字将转换为浮点数” --- 这是不正确的(至少必须改写)。 JS 中的 EVERY 数字是 IEEE 754 双精度数。
  • 这可能会解决我的问题。如果可行,我会尝试并接受您的回答。谢谢
  • "只能显示为浮点数" --- 这也很丑。表示与背后的数据无关。
  • @zerkms:好吧,我已经尽力了;)如果您对如何表达我在这里的意思有更好的了解,请随时编辑。
  • @zerkms:转CW,随意编辑。
猜你喜欢
  • 1970-01-01
  • 2019-11-16
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2013-05-27
相关资源
最近更新 更多