【问题标题】:How small can a JavaScript number be without displaying in scientific notation?如果不以科学计数法显示,JavaScript 数字可以有多小?
【发布时间】:2018-02-24 03:33:27
【问题描述】:

我编写了一些代码,将数字四舍五入到给定的小数位数,但在出现下溢时会使用更多位以避免四舍五入为零,这对用户来说信息不足。

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

我怎么知道一个数字什么时候小到可以用科学计数法显示?

我可以比较一个最小的数字吗?如果有,它是什么? 还是有更好的办法?

(我知道我可以将数字转换为字符串并检查它是否有“e”,但我也是那种很想知道任何纯数学解决方案的类型。)

【问题讨论】:

  • 为什么不直接获取数字的字符串形式并检查嵌入的“e”?
  • @Pointy:哦,出于好奇,我想知道如何在数学上做到这一点。我的意思是把它包括在问题中。让我编辑它...
  • 好吧,诀窍是浮点数学相当复杂,而检查“e”真的很容易:)
  • 结果可能取决于浏览器,最好的解决方案是检查myNum.toString() 是否有e
  • 对我电脑上的浏览器(当前 FF、Chrome、Edge)进行了快速测试,1e-6 似乎是在将值转换为 a 时未以科学计数法打印的最小数字细绳。所以Math.abs(value) >= 1e-6 的所有东西都应该是安全的

标签: javascript floating-point numbers scientific-notation


【解决方案1】:

以科学计数法显示数字有几个原因:

  • 如果数字中有效数字的长度大于21。
  • 如果非零数之前的零个数大于 6。(例如 0.00000001)

Section 9.8.1 of ECMA-262 中指定了向科学计数法的转换。

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

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多