例如,我需要将6.688689舍入到6.7,但它总是显示7。

我的方法:

Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or 
Math.round(6.688689, 2);

但结果总是一样的7…我做错了什么?


当前回答

我认为这个函数会有帮助。

 function round(value, ndec){
    var n = 10;
    for(var i = 1; i < ndec; i++){
        n *=10;
    }

    if(!ndec || ndec <= 0)
        return Math.round(value);
    else
        return Math.round(value * n) / n;
}


round(2.245, 2) //2.25
round(2.245, 0) //2

其他回答

+((6.688689 * (1 + Number.EPSILON)).toFixed(1)); // 6.7
+((456.1235 * (1 + Number.EPSILON)).toFixed(3)); // 456.124

我有很好的解决方案,如果toFixed()不工作。

function roundOff(value, decimals) {
  return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}

例子

roundOff(10.456,2) //output 10.46
var number = 6.688689;
var roundedNumber = Math.round(number * 10) / 10;

如果你在node.js环境下,你可以尝试mathjs

const math = require('mathjs')
math.round(3.1415926, 2) 
// result: 3.14

我认为下面的功能可以帮助

function roundOff(value,round) {
   return (parseInt(value * (10 ** (round + 1))) - parseInt(value * (10 ** round)) * 10) > 4 ? (((parseFloat(parseInt((value + parseFloat(1 / (10 ** round))) * (10 ** round))))) / (10 ** round)) : (parseFloat(parseInt(value * (10 ** round))) / ( 10 ** round));
}

用法:roundOff(600.23458,2);会返回600.23吗