Тема: JS: Округление по модулю (обсуждение)
На страницах MDN есть пример десятичного округления чисел по степеням 10. Недавно на глаза попался фрагмент кода java, где реализовано округление по произвольному числу. Реализовал на javascript. Публикую, вдруг кому-то понадобится.
(function()
{
var names = ['floor', 'ceil', 'round'];
for (var i = 0; i < names.length; i++) {
var name = names[i];
(function(name, method)
{
//Math[name] =
Math[name + 'Modulo'] =
function(value, modulo)
{
return arguments.length < 2
? method(value)
: method(value / modulo) * modulo;
};
})(name, Math[name]);
}
})();
// Floor
Math.floorModulo(5, 5); // 5
Math.floorModulo(6, 5); // 5
Math.floorModulo(7, 5); // 5
Math.floorModulo(8, 5); // 5
Math.floorModulo(9, 5); // 5
Math.floorModulo(10, 5); // 10
// Ceil
Math.ceilModulo(5, 5); // 5
Math.ceilModulo(6, 5); // 10
Math.ceilModulo(7, 5); // 10
Math.ceilModulo(8, 5); // 10
Math.ceilModulo(9, 5); // 10
Math.ceilModulo(10, 5); // 10
// Round
Math.roundModulo(5, 5); // 5
Math.roundModulo(6, 5); // 5
Math.roundModulo(7, 5); // 5
Math.roundModulo(8, 5); // 10
Math.roundModulo(9, 5); // 10
Math.roundModulo(10, 5); // 10