如果没有以科学记数法显示JavaScript数字可以多少?
问题描述:
我已经做了一些代码,将数字四舍五入到给定的小数位数,但是当下溢时会使用更多的位置以避免舍入为零,这对用户来说不够丰富。如果没有以科学记数法显示JavaScript数字可以多少?
但我注意到偶尔会有一小部分以科学记数法显示。我的目标用户不希望对科学记数法感到满意,并且在任何情况下,即使在处理了下溢之后,这些数字仍然很小,应该视为零。
我怎么知道一个数字如此小以至于它会以科学记数法显示?
有没有最小的数字我可以比较,如果是的话是什么? 或者还有更好的方法吗?
(我知道我可以数转换为字符串,并检查是否有一个“e”,但我是一个谁是好奇种类就知道了任何仅数学的解决方案了。)
答
有数显示在科学记数法有几个原因:
- 如果显著位数的数目的长度大于21
- 如果零的非零数字之前的数目大于6(例如0.00000001)
在Section 9.8.1 of ECMA-262中指定了转换为数字的科学记数法。
本规范的实现可以在V8 engine here中找到。
为什么不只是得到数字的字符串形式并检查嵌入的“e”? – Pointy
@Pointy:哦,为了我的好奇,我想知道如何在数学上做到这一点。我打算在问题中包括这一点。让我编辑它...... – hippietrail
嗯,诀窍是浮点数学是非常复杂的,而检查一个“e”真的很容易:) – Pointy