有没有办法在Javascript中截断科学记数字?

时间:2011-01-28 17:02:08

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

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

让我们说

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

输出

1.5000000000000002e-8

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

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

我可以转换为字符串和解析,但它似乎不正确......

有什么想法吗?


(如果你认为这是重复的一个,我提前道歉,但我找不到类似的问题,只有相关的问题)

盖尔

2 个答案:

答案 0 :(得分:11)

您可以使用toPrecision方法:

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

答案 1 :(得分:0)

如果你正在做科学工作,需要考虑重要人物:Rounding to an arbitrary number of significant digits