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

Gab*_*ger 5 javascript floating-point rounding-error scientific-notation rounding

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

让我们说吧

var a = 15 * 1e-9;
alert(a)
Run Code Online (Sandbox Code Playgroud)

输出

1.5000000000000002e-8
Run Code Online (Sandbox Code Playgroud)

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

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

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

任何的想法 ?


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

盖尔

CMS*_*CMS 11

您可以使用以下toPrecision方法:

var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"
Run Code Online (Sandbox Code Playgroud)

  • @Stephen,是的,或者`var b = + a.toPrecision(2);`或`var b = Number(a.toPrecision(2));` (2认同)