舍入数到最接近的.5十进制数

时间:2013-10-15 20:41:13

标签: javascript math rounding

我正在寻找

的输出

4.658227848101266 = 4.5

4.052117263843648 = 4.0

我最接近的是

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

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

6 个答案:

答案 0 :(得分:35)

(Math.round(rating * 2)/ 2).toFixed(1)

答案 1 :(得分:22)

这很简单,您应该将该数字乘以2,然后将其四舍五入,然后除以2:

var roundHalf = function(n) {
    return (Math.round(n*2)/2).toFixed(1);
};

答案 2 :(得分:10)

这对我有用! (使用最接近你的格式)

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

答案 3 :(得分:3)

所以这个答案对我有帮助。这里添加了一些魔法来处理舍入到.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);
};

答案 4 :(得分:0)

这有点晚了。但是对于想要四舍五入到整数或 0.5 的人,你可以试试这个:

function roundDown(number) {
      var decimalPart = number % 1;
      if (decimalPart < 0.5)
         return number - decimalPart;
      else
         return number - decimalPart + 0.5;}

答案 5 :(得分:-3)

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

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