Oz.*_*Oz. 7 javascript numbers scientific-notation
我需要以非指数形式在JavaScript中获取极大数字的值.Number.toFixed只是以指数形式将其作为字符串返回,这比我的更糟糕.
这是Number.toFixed回报:
>>> x = 1e+31
1e+31
>>> x.toFixed()
"1e+31"
Run Code Online (Sandbox Code Playgroud)
Number.toPrecision 也不起作用:
>>> x = 1e+31
1e+31
>>> x.toPrecision( 21 )
"9.99999999999999963590e+30"
Run Code Online (Sandbox Code Playgroud)
我想要的是:
>>> x = 1e+31
1e+31
>>> x.toNotExponential()
"10000000000000000000000000000000"
Run Code Online (Sandbox Code Playgroud)
我可以编写自己的解析器,但如果存在,我宁愿使用本机JS方法.
您可以使用toPrecision指定要显示多少位的参数:
x.toPrecision(31)
Run Code Online (Sandbox Code Playgroud)
然而,在我测试的浏览器中,上述代码仅适用于 Firefox。根据 ECMAScript 规范, 的有效范围toPrecision是 1 到 21,IE 和 Chrome 都会RangeError相应地抛出 a 。这是因为 JavaScript 中使用的浮点表示实际上无法将数字表示为 31 位精度。
答案是没有这样的内置函数。我已经从高处和低处寻找过。这是我用来将数字拆分为符号、系数(小数点前的数字)、小数部分(小数点后的数字)和指数的正则表达式:
/^([+-])?(\d+)\.?(\d*)[eE]([+-]?\d+)$/
Run Code Online (Sandbox Code Playgroud)
答案是“自己动手”,您已经这样做了。
| 归档时间: |
|
| 查看次数: |
5406 次 |
| 最近记录: |