Эта функция округляет до ближайшего кратного любого из указанных вами факторов.Он не будет округлять 0 или числа, которые уже кратны.
round_up = function(x,factor){ return x - (x%factor) + (x%factor>0 && factor);}
round_up(25,3)
27
round up(1,3)
3
round_up(0,3)
0
round_up(6,3)
6
Поведение для 0 не то, о чем вы просили, но кажется более последовательным и полезным в этом смысле.Если вы хотите округлить 0, то следующая функция сделает это:
round_up = function(x,factor){ return x - (x%factor) + ( (x%factor>0 || x==0) && factor);}
round_up(25,3)
27
round up(1,3)
3
round_up(0,3)
3
round_up(6,3)
6