1

Тема: JS: Округление по модулю

На страницах MDN есть пример десятичного округления чисел по степеням 10. Недавно на глаза попался фрагмент кода java, где реализовано округление по произвольному числу. Реализовал на javascript. Публикую, вдруг кому-то понадобится.

Обсуждение в теме JS: Округление по модулю (обсуждение)



(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

( 2 * b ) || ! ( 2 * b )