javascript - 与 JS 中的 Number.toExponential 相反

标签 javascript numbers scientific-notation

我需要在 JavaScript 中以非指数形式获取一个非常大的数字的值。 Number.toFixed 只是以指数形式将其作为字符串返回,这比我拥有的更糟糕。

这是 Number.toFixed 返回的内容:

>>> x = 1e+31
1e+31
>>> x.toFixed()
"1e+31"

Number.toPrecision 也不起作用:

>>> x = 1e+31
1e+31
>>> x.toPrecision( 21 )
"9.99999999999999963590e+30"

我想要的是:

>>> x = 1e+31
1e+31
>>> x.toNotExponential()
"10000000000000000000000000000000"

我可以编写自己的解析器,但我宁愿使用原生 JS 方法(如果存在的话)。

最佳答案

您可以使用 toPrecision使用指定要显示多少位的参数:

x.toPrecision(31)

但是,在我测试过的浏览器中,上面的代码只适用于Firefox。根据 ECMAScript 规范,toPrecision 的有效范围是 1 到 21,IE 和 Chrome 都会相应地抛出一个 RangeError。这是因为 JavaScript 中使用的浮点表示法实际上无法将数字表示为 31 位精度。

关于javascript - 与 JS 中的 Number.toExponential 相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170633/

相关文章:

Javascript querySelectorAll,如何只匹配顶部元素?

Android:如何为应用程序设置文化值

perl - 如何在 Perl 中转换科学记数法和十进制记数法?

java - 为什么用科学计数法写一个数字会在这段代码中有所不同?

go - '%b'动词是 float 时输出什么

javascript - 这是从带有对象的数组创建列表的正确方法吗?

javascript - 多个异步函数调用

javascript - 谷歌 JS 编码约定 - "The var keyword must not be used"

javascript - 将数字而不是字符串传递给 parseFloat()

python - 欺骗 numpy/python 来表示非常大和非常小的数字