如果没有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作为最后一个小数,应该向上舍入。
答案 0 :(得分:4)
这应该做你想要的:
function twoDecimals(n) {
var log10 = n ? Math.floor(Math.log10(n)) : 0,
div = log10 < 0 ? Math.pow(10, 1 - log10) : 100;
return Math.round(n * div) / div;
}
var test = [
2.50000000004,
2.652,
2.655,
0.00000204,
0.00000205,
0.00000605
];
test.forEach(function(n) {
console.log(n, '->', twoDecimals(n));
});
&#13;