【问题标题】:Is there a way to truncate scientific notation numbers in Javascript?有没有办法在Javascript中截断科学记数法数字?
【发布时间】:2011-01-28 17:02:08
【问题描述】:

众所周知,因为它是关于 SO 的最受关注的话题之一,所以我遇到了舍入错误的问题(这实际上不是错误,我很清楚)。 我将举例说明我有哪些可能的数字以及我希望能够获得哪些输入,而不是解释我的观点:

我们说

var a = 15 * 1e-9;
alert(a)

输出

1.5000000000000002e-8

我希望能够获得1.5e-8,但我不能只乘以 10e8、四舍五入并除以 10e8,因为我不知道它是 e-8 还是 e-45 或其他任何值。

所以基本上我希望能够获得1.5000002 部分,应用toFixed(3) 并放回指数部分。

我可以转换成一个字符串并解析,但它似乎不正确......

有什么想法吗?


(如果您觉得这是许多重复问题之一,我提前道歉,但我找不到类似的问题,只有相关的问题)

盖尔

【问题讨论】:

    标签: javascript floating-point rounding scientific-notation rounding-error


    【解决方案1】:

    您可以使用toPrecision 方法:

    var a = 15 * 1e-9;
    a.toPrecision(2); // "1.5e-8"
    

    【讨论】:

    • 如文档所述,这为您提供了一个 (typeof a ==) "string";非常适合输出。如果你想得到一个“数字”,你可以做var b = 1 * a.toPrecision(2);当心计算中间的四舍五入。
    • @Stephen,是的,或var b = +a.toPrecision(2);var b = Number(a.toPrecision(2));
    • 没想到一个简单的解决方案!下次我会更深入地研究文档!
    【解决方案2】:

    如果您正在进行科学工作并且需要考虑重要数字:Rounding to an arbitrary number of significant digits

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      相关资源
      最近更新 更多