【问题标题】:Why JS uses scientific (exponential) notation?为什么 JS 使用科学(指数)表示法?
【发布时间】:2017-09-23 01:22:19
【问题描述】:

当我使用固定记数法键入大数字时,JS 将其更改为科学记数法。为什么?仅仅是因为很难读取大量数字还是与在内存中存储大量数字的困难有关?

【问题讨论】:

  • 数字转换为字符串时的格式化约定就是:约定。您可以使用自己的代码或通过其他库来格式化数字。
  • 与浮点数的存储方式有关。许多 c 风格的语言出于相同的基本原因使用指数表示法。
  • 它不是特定于 JavaScript 的。大多数语言以科学计数法显示大量数字(Excel 也是如此),因为大量数字占用太多空间。它与它们在内存中的存储方式无关

标签: javascript numbers computer-science


【解决方案1】:

在 Javascript 中,数字始终存储为浮点数并遵循IEEE 754's format。至于显示数字,Javascript 使用了 Dancrumb 提到的 ECMAScript 显示算法,它定义了何时开始以科学计数法格式呈现数字。

如果您想避免大数的科学记数法,有一些方法可以绕过它,本文讨论了这些方法:How to avoid scientific notation for large numbers in JavaScript?

【讨论】:

    【解决方案2】:

    ECMA 规范定义了如何将数字转换为字符串(这是您唯一一次看到科学记数法)。

    规范的相关部分在这里:https://www.ecma-international.org/ecma-262/8.0/index.html#sec-tostring-applied-to-the-number-type

    据我所知,科学记数法适用于大于 10^21 或小于 10^-6 的数字

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多