我正在寻找的输出
4.658227848101266 = 4.5
4.052117263843648 = 4.0
我得到的最接近的是
rating = (Math.round(rating * 4) / 4).toFixed(1)
但是有了这个数字4.658227848101266 = 4.8???
我正在寻找的输出
4.658227848101266 = 4.5
4.052117263843648 = 4.0
我得到的最接近的是
rating = (Math.round(rating * 4) / 4).toFixed(1)
但是有了这个数字4.658227848101266 = 4.8???
(Math.round(rating * 2) / 2).toFixed(1)
这很简单,您应该将该数字乘以 2,然后将其四舍五入,然后除以 2:
var roundHalf = function(n) {
return (Math.round(n*2)/2).toFixed(1);
};
这对我有用!(使用最接近您的格式)
rating = (Math.round(rating * 2) / 2).toFixed(1)
所以这个答案帮助了我。这里添加了一点魔法来处理舍入到 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;}
我假设您想格式化输出数字而不是截断精度。在这种情况下,请使用 DecimalFormat。例如:
DecimalFormat df = new DecimalFormat("#.#");
df.format(rating);