我需要在 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/