如果没有以科学记数法显示JavaScript数字可以多少?

如果没有以科学记数法显示JavaScript数字可以多少?

问题描述:

我已经做了一些代码,将数字四舍五入到给定的小数位数,但是当下溢时会使用更多的位置以避免舍入为零,这对用户来说不够丰富。如果没有以科学记数法显示JavaScript数字可以多少?

但我注意到偶尔会有一小部分以科学记数法显示。我的目标用户不希望对科学记数法感到满意,并且在任何情况下,即使在处理了下溢之后,这些数字仍然很小,应该视为零。

我怎么知道一个数字如此小以至于它会以科学记数法显示?

有没有最小的数字我可以比较,如果是的话是什么? 或者还有更好的方法吗?

(我知道我可以数转换为字符串,并检查是否有一个“e”,但我是一个谁是好奇种类就知道了任何仅数学的解决方案了。)

+1

为什么不只是得到数字的字符串形式并检查嵌入的“e”? – Pointy

+0

@Pointy:哦,为了我的好奇,我想知道如何在数学上做到这一点。我打算在问题中包括这一点。让我编辑它...... – hippietrail

+1

嗯,诀窍是浮点数学是非常复杂的,而检查一个“e”真的很容易:) – Pointy

有数显示在科学记数法有几个原因:

  • 如果显著位数的数目的长度大于21
  • 如果零的非零数字之前的数目大于6(例如0.00000001)

Section 9.8.1 of ECMA-262中指定了转换为数字的科学记数法。

本规范的实现可以在V8 engine here中找到。