Solución:
Multiplica por 20, luego divide por 20:
(Math.ceil(number*20)/20).toFixed(2)
La respuesta de Rob con mi adición:
(Math.ceil(number*20 - 0.5)/20).toFixed(2)
De lo contrario, siempre se redondea al 0,05 más cercano.
** ACTUALIZAR **
Lo siento, se ha señalado que esto no es lo que quería el póster original.
Yo optaría por el estándar de dividir realmente por el número al que lo estás factorizando, y redondearlo y multiplicarlo nuevamente después. Ese parece ser un método de trabajo adecuado que puede usar con cualquier número y mantener la imagen mental de lo que está tratando de lograr.
var val = 26.14,
factor = 0.05;
val = Math.round(val / factor) * factor;
Esto funcionará para decenas, centenas o cualquier número. Si está redondeando específicamente al número más alto, utilice Math.ceil
en lugar de Math.round
.
Otro método específicamente para redondear solo a 1 o más lugares decimales (en lugar de la mitad de un lugar) es el siguiente:
Number(Number(1.5454545).toFixed(1));
Crea una cadena de números fijos y luego la convierte en una cadena real. Number
.