2012-02-14 16 views
12

Estoy buscando una manera de reunir a un número al siguiente múltiplo más cercano de 250. Así, por ejemplo, si tuviera la siguiente JS:Ronda una variable hasta el siguiente múltiplo más cercano de X

var containerHeight = $("#container").height(); 

... Y nos imaginamos que el valor de "containerHeight" era 680px, querría una forma de redondear hasta 750px (si el valor era 1007, debería redondear hasta 1250). Sospecho que esto requiere una solución que es más compleja de lo que anticipo. ¿O quizás jQuery tiene una función incorporada que hará que esto sea factible?

supongo que esto es más una cuestión de matemáticas que se trata de jQuery (pero mis conocimientos de sintaxis de jQuery es también un poco limitado :)

cualquier idea/bits de ayuda son muy apreciadas, Gracias!

+0

duplicado Posible de ([redondeo en pasos de 20 (o X) en JavaScript?] http://stackoverflow.com/questions/14627566/rounding-in-steps-of-20-or-x-in-javascript) – leo

Respuesta

21
containerHeight = Math.ceil(containerHeight/250.0) * 250; 
+0

¡Gracias, James! Eso es perfecto. – LearnWebCode

+0

No es importante que esto no funcione para los números de punto flotante. –

+0

@MatthewMarlin Para números en coma flotante, esta solución funciona (no agrega la cosa X.X00000001 ...): https://stackoverflow.com/a/27861660/2441655 (esto hace redondeo en lugar de límite máximo - pero puede cambiarse fácilmente para usar el techo con 'Math.ceil') – Venryx

6
function NearestMultiple(i, j) { 
    alert(Math.ceil(i/ j) * j); 
} 

NearestMultiple(1007, 250); //returns 1250 

Ver ejemplo en http://jsfiddle.net/SUya9/1/

O lo que dijo James también!

EDIT: Veo que quería reunir a todo el tiempo ... Actualizado el violín, pero James le puso en 1.

+1

¡Gracias por la ayuda, eso hubiera funcionado perfectamente también! – LearnWebCode

+0

Tenga en cuenta que esto no funciona para los números de coma flotante. http://jsfiddle.net/SUya9/15/ –

+0

@MatthewMarlin Para números en coma flotante, esta solución funciona (no agrega la cosa X.X00000001 ...): https://stackoverflow.com/a/27861660/2441655 (esto hace redondeo en lugar de techo-ing - pero puede cambiarse fácilmente para usar techo con 'Math.ceil') – Venryx

Cuestiones relacionadas