2011-12-13 12 views
7

Tengo una variable numérica que está entre 0 y 100. Podría ser algo así como 83.333334.Obteniendo un número divisible por cinco con Math.Round

Quiero usar Math.Round para redondear el número (por ejemplo, Math.round(83.333334);). ¿Cómo puedo hacer esto para que el resultado sea siempre divisible por cinco (es decir, en el conjunto [0, 5, 10, 15 ... 85, 90, 95, 100])?

Respuesta

24

Dividir por 5, alrededor de ella, se multiplica por 5.

alert(Math.round(83/5) * 5); 

jsFiddle Demo

+2

+1 Se agregó una divertida demostración jsFiddle. – kapa

+0

@bazmegakapa genial. –

+2

@ Xeon06 ¿hay algún nombre matemático para esta lógica? – Reddy

2

Utilice modulus operator para redondear su número a un múltiplo de 5, vea el ejemplo a continuación.

var x = Math.round(83.333334); 

x = x - (x % 5); 

Si le gustaría "vuelta hacia cero" (y tienen un valor correcto para los números negativos aswell) usar algo como esto:

x = Math[x < 0 ? 'ceil' : 'floor'] (x/5) * 5; 
+3

Will "ronda" 89 a 85. – kapa

+0

@bazmegakapa Eso es correcto, y para ser honesto, asumí que esto era lo que OP estaba pidiendo, es por eso que escribí "ronda". Pero tal vez (s) quiso decir ronda al múltiplo más cercano de cinco. –

1

seguirlo .

Math.round(val/5) * 5; 
+1

No puedo encontrar ningún caso en el que agregar 2.5 haga una diferencia en el resultado. ¿Ejemplos? * Editar: * De hecho, esto causa resultados incorrectos. Si ingreso '80', estaría convirtiéndolo en' 82.5', que luego daría como resultado '85' ad el múltiplo más cercano de 5, cuando aún debería ser '80'. – animuson

+0

@animuson Disculpas, en mi cabeza, estaba pensando 'piso', no' redondo'. ¡Fijo! – cheeken

2
function roundDownToMultiple(number, multiple) { 
    return number - (number % multiple); 
} 

roundDownToMultiple(86, 5); // 85 

roundDownToMultiple(89, 5); // 85 

roundDownToMultiple(96, 5); // 95 
+0

Olvidé todo sobre modulos, gracias! –

1

El uso de este Math.round(Math.floor(Math.random() * 100)/5) * 5 Usted puede obtener los números divisibles por 5.

  • 100 - es el rango del resultado.
Cuestiones relacionadas