console.log(2E-12); // returns 2E-12
console.log(2E12); // returns 2000000000000
为什么第一行返回2E-12而不是第二行。这是使用指数的非法方式吗?
答案 0 :(得分:2)
渲染器很聪明。如果您尝试console.log(2E-6)
,您会发现它符合您的预期。 console.log(2E-7)
不...至少在Chrome和当前版本的IE中。有人认为指数符号对于长分数值更易读。
此外,请注意,您获得的2e-12
是一个数字,而不是字符串。
> console.log(2e-12*2e5)
4e-7
答案 1 :(得分:2)
来自toString applied to the Number type的ECMAScript规范:
7。如果0 < n≤21,返回由s的十进制表示的最高n位数字组成的字符串,后跟小数点'。',后跟s的十进制表示的其余k-n位。
8。如果-6&lt; n≤0,返回由字符'0'组成的字符串,后跟小数点'。',后跟-n出现的字符'0',后跟s的十进制表示的k位数。
9。否则,如果k = 1,则返回由s的单个数字组成的字符串,后跟小写字母“e”,后跟加号'+'或减号' - ',根据n-1是正数还是负数,后跟整数abs(n-1)的十进制表示(没有前导零)。
n
实际上是数字的指数。因此,如果指数介于-7
和21
之间,则应正常显示该数字,否则应使用指数表示法。