Javascript 四舍五入到最接近的小数点后5位

Javascript 四舍五入到最接近的小数点后5位,javascript,math,rounding,Javascript,Math,Rounding,我正在寻找一个 4.658227848101266=4.5 4.052117263843648=4.0 我得到的最接近的是 rating = (Math.round(rating * 4) / 4).toFixed(1) 但是使用这个数字4.658227848101266=4.8???我假设您希望格式化输出的数字,而不是截断精度。在这种情况下,请使用十进制格式。例如: DecimalFormat df = new DecimalFormat("#.#"); df.format(rating);

我正在寻找一个

4.658227848101266=4.5

4.052117263843648=4.0

我得到的最接近的是

rating = (Math.round(rating * 4) / 4).toFixed(1)

但是使用这个数字4.658227848101266=4.8???

我假设您希望格式化输出的数字,而不是截断精度。在这种情况下,请使用十进制格式。例如:

DecimalFormat df = new DecimalFormat("#.#");
df.format(rating);

很简单,你应该把这个数字乘以2,然后四舍五入,再除以2:

var roundHalf = function(n) {
    return (Math.round(n*2)/2).toFixed(1);
};
这对我有用!(使用最接近您的格式)


所以这个答案帮助了我。这里添加了一点o魔法来处理0.5或整数的舍入。请注意,与其他答案相比,*2和/2切换为/.5和*.5

/*
* @param {Number} n - pass in any number
* @param {Number} scale - either pass in .5 or 1
*/
var superCoolRound = function(n,scale) {
    return (Math.round(n / scale) * scale).toFixed(1);
};

现在有点晚了。但对于想将整数或0.5四舍五入的人,您可以尝试以下方法:

function roundDown(number) {
      var decimalPart = number % 1;
      if (decimalPart < 0.5)
         return number - decimalPart;
      else
         return number - decimalPart + 0.5;}
函数取整(数字){
var decimalPart=编号%1;
如果(小数部分<0.5)
返回编号-小数部分;
其他的
返回编号-小数部分+0.5;}

当然,我之前的回答在JavaScript中不起作用。对不起,如果我造成了任何混乱。(不过,它可以在Java中工作。)
/*
* @param {Number} n - pass in any number
* @param {Number} scale - either pass in .5 or 1
*/
var superCoolRound = function(n,scale) {
    return (Math.round(n / scale) * scale).toFixed(1);
};
function roundDown(number) {
      var decimalPart = number % 1;
      if (decimalPart < 0.5)
         return number - decimalPart;
      else
         return number - decimalPart + 0.5;}