这是我目前拥有的:
function getNearestMultipleOf(n, m) {
return Math.round(n/m) * m;
}
console.log(getNearestMultipleOf(37,18)); //36
一位 friend 告诉我 Math.round 很昂贵,更有效的方法是使用模来检查 n 是否必须四舍五入并使用
Math.ceil
或 floor
。你会怎么做?
最佳答案
为什么不使用 模块化 运算符和简单的 减法 ?
http://jsfiddle.net/LCDy6/1/
function getNearestMultipleOf(n, m) {
lessOne = n-(n%m);
moreOne = lessOne + m;
if((n-lessOne) < (moreOne - n))
return lessOne;
else
return moreOne;
}
alert(getNearestMultipleOf(38,3));
关于optimization - 将 n 舍入为 m 的倍数的有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5230041/