我正在寻找
的输出4.658227848101266 = 4.5
4.052117263843648 = 4.0
我最接近的是
rating = (Math.round(rating * 4) / 4).toFixed(1)
但是这个数字是4.658227848101266 = 4.8 ???
答案 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);