使用指数的javascript数字文字

Posted

技术标签:

【中文标题】使用指数的javascript数字文字【英文标题】:javascript number literal using exponent 【发布时间】:2014-08-19 00:34:53 【问题描述】:
console.log(2E-12); // returns 2E-12
console.log(2E12); // returns 2000000000000

为什么第一行返回 2E-12 而不是第二行。这是使用指数的非法方式吗?

【问题讨论】:

一个指数为正,另一个为负。 我认为这与 javascript 语言无关,而是console.log 的实现。 @Musa well console.log("" + 2E-12) 打印同样的东西。 是的,console.log 只是使用toString 来获取渲染。 【参考方案1】:

来自toString applied to the Number type的ECMAScript规范:

7。如果 0

8。如果 -6

9。否则,如果 k = 1,则根据 n−1 是正数还是负数,返回由 s 的一位数、后跟小写字符 'e'、后跟加号 '+' 或减号 '-' 组成的 String ,后跟整数 abs(n−1) 的十进制表示(没有前导零)。

n 实际上是数字的指数。所以这表示如果指数介于-721 之间,则该数字应正常显示,否则应使用指数表示法。

【讨论】:

【参考方案2】:

渲染器很聪明。如果您尝试console.log(2E-6),您会看到它符合您的预期。 console.log(2E-7) 不会……至少在 Chrome 和当前版本的 IE 中是这样。有人认为指数符号对于长小数值更易读。

另外,请注意,您得到的 2e-12 是一个数字,而不是一个字符串。

> console.log(2e-12*2e5)
4e-7

【讨论】:

对于正指数,它从2e+21开始使用指数符号 所以基本上这是一个错误? ECMAScript 6 中好像是这样指定的。见people.mozilla.org/~jorendorff/…

以上是关于使用指数的javascript数字文字的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中查找指数的最后六位数字?

使用javascript循环读取JSON数字数组[重复]

JavaScript Number 对象

Javascript:当幂等于 0 时,用于解决指数问题的 While 循环出现错误

如何处理 javascript 中的 256 位数字并对它们执行按位运算?

你不知道的高性能JAVASCRIPT | TW洞见