Javascript:如何将数字舍入为2非零小数

时间:2016-08-08 20:03:50

标签: javascript math rounding

如果没有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作为最后一个小数,应该向上舍入。

1 个答案:

答案 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;
&#13;
&#13;