有人可以告诉我如何将数字四舍五入到最接近的 0.5。
我必须根据屏幕分辨率缩放网页中的元素,为此我只能将 pts 中的字体大小指定为 1、1.5 或 2 等。
如果我四舍五入,则四舍五入到小数点后 1 位或无。我怎样才能完成这项工作?
有人可以告诉我如何将数字四舍五入到最接近的 0.5。
我必须根据屏幕分辨率缩放网页中的元素,为此我只能将 pts 中的字体大小指定为 1、1.5 或 2 等。
如果我四舍五入,则四舍五入到小数点后 1 位或无。我怎样才能完成这项工作?
编写自己的函数,乘以 2,舍入,然后除以 2,例如
function roundHalf(num) {
return Math.round(num*2)/2;
}
这是一个更通用的解决方案,可能对您有用:
function round(value, step) {
step || (step = 1.0);
var inv = 1.0 / step;
return Math.round(value * inv) / inv;
}
round(2.74, 0.1)
= 2.7
round(2.74, 0.25)
= 2.75
round(2.74, 0.5)
= 2.5
round(2.74, 1.0)
= 3.0
只是上述所有答案的精简版:
Math.round(valueToRound / 0.5) * 0.5;
通用的:
Math.round(valueToRound / step) * step;
扩展 newtron 的最高答案,以仅对 0.5 以上进行四舍五入
function roundByNum(num, rounder) {
var multiplier = 1/(rounder||0.5);
return Math.round(num*multiplier)/multiplier;
}
console.log(roundByNum(74.67)); //expected output 74.5
console.log(roundByNum(74.67, 0.25)); //expected output 74.75
console.log(roundByNum(74.67, 4)); //expected output 76
Math.round(-0.5)
返回0,但根据数学规则它应该是-1。
更多信息:Math.round() 和Number.prototype.toFixed()
function round(number) {
var value = (number * 2).toFixed() / 2;
return value;
}