Javascript四舍五入到所需的小数位数问题

时间:2016-10-27 08:02:37

标签: javascript rounding

我使用一个舍入到所需小数位数的函数:

function modRound(value, precision)
{
    var precision_number = Math.pow(10, precision);
    return Math.round(value * precision_number) / precision_number;
}

它的工作正确,但不是0.565。 modRound(0.575, 2)给出0.58(正确),但modRound(0.565, 2)给出0.56;我期待0.57:

function modRound(value, precision) {
  var precision_number = Math.pow(10, precision);
  return Math.round(value * precision_number) / precision_number;
}
function test(num) {
  console.log(num, "=>", modRound(num, 2));
}
test(0.575);
test(0.565);

为什么会发生这种情况以及该怎么做?

1 个答案:

答案 0 :(得分:-2)

您可以添加一个非常小的数字:

function modRound(value, precision)
{
    var precision_number = Math.pow(10, precision);
    return Math.round((value+0.00000000001) * precision_number) / precision_number;
}
alert(modRound(0.565, 2))

这是JSFiddle