【发布时间】:2016-08-08 20:03:50
【问题描述】:
如果没有 jQuery,我如何将浮点数四舍五入为 2 个非零小数(但仅在需要时 - 1.5 而不是 1.50)?
就像这样:
2.50000000004 -> 2.5
2.652 -> 2.65
2.655 -> 2.66
0.00000204 -> 0.000002
0.00000205 -> 0.0000021
我试过这段代码:
var r = n.toFixed(1-Math.floor(Math.log10(n)));
但n=0.00000205 隐含r=0.0000020,与上述条件相冲突。
但是n=0.0000020501隐含r=0.0000021,可以,所以错误只针对最后一个小数点5,应该四舍五入。
【问题讨论】:
-
@PrasadShinde 这会将最后 2 个示例四舍五入为 0,这不是 OP 想要的。
-
不是重复的。我不想四舍五入到 2 个小数位,我想四舍五入到 2 个非零小数位。
-
您要查找的术语是“四舍五入”。见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
获得
0.000020的原因与浮点表示的不精确性有关。0.0000205不能完全表示为浮点值。对于可以的数字,结果如您所料。注意:尝试这样做的 Ad-hoc 编码函数可能都会遇到同样的问题。
标签: javascript math rounding