众所周知,因为它是关于SO的最常见的主题之一,我遇到了舍入错误的问题(实际上并不是错误,我很清楚)。 我不会解释我的观点,而是举例说明我可能拥有的数字以及我希望能够获得的输入:
让我们说
var a = 15 * 1e-9;
alert(a)
输出
1.5000000000000002e-8
我希望能够获得1.5e-8
,但我不能只乘以10e8,舍入并除以10e8,因为我不知道它是e-8还是e-45或其他任何东西
所以基本上我希望能够获得1.5000002
部分,应用toFixed(3)
并放回指数部分。
我可以转换为字符串和解析,但它似乎不正确......
有什么想法吗?
(如果你认为这是重复的一个,我提前道歉,但我找不到类似的问题,只有相关的问题)
盖尔
答案 0 :(得分:11)
您可以使用toPrecision
方法:
var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"
答案 1 :(得分:0)
如果你正在做科学工作,需要考虑重要人物:Rounding to an arbitrary number of significant digits