第一个数字需要四舍五入到最接近的第二个数字.有很多方法可以做到这一点,但最好的和最短的算法是什么?任何挑战者:-)
1244-> 1200
1254-> 1300
123-> 100
178-> 200
1576-> 1600
1449-> 1400
123456->
123500 654321-> 654300
23-> 00
83-> 100
Dav*_*d Z 33
输入n:
(n + 50) / 100 * 100
Run Code Online (Sandbox Code Playgroud)
使用整数除法.
请注意,许多语言/库已经具有执行此操作的功能.
小智 5
我知道现在已经很晚了,但是当我需要将事情四舍五入到最接近的 nTh 时,我通常会设置以下内容:
Number.prototype.roundTo = function(nTo) {
nTo = nTo || 10;
return Math.round(this * (1 / nTo) ) * nTo;
}
console.log("roundto ", (925.50).roundTo(100));
Number.prototype.ceilTo = function(nTo) {
nTo = nTo || 10;
return Math.ceil(this * (1 / nTo) ) * nTo;
}
console.log("ceilTo ", (925.50).ceilTo(100));
Number.prototype.floorTo = function(nTo) {
nTo = nTo || 10;
return Math.floor(this * (1 / nTo) ) * nTo;
}
console.log("floorTo ", (925.50).floorTo(100));
Run Code Online (Sandbox Code Playgroud)
我发现自己使用 Number.ceilTo(..) 因为我正在使用 Canvas 并试图确定要扩展的程度。