2012-02-14 10 views
12

Sto cercando un modo per arrotondare un numero al successivo più vicino multiplo di 250. Così, per esempio, se ho avuto il seguente JS:rotonda una variabile fino al prossimo più vicino multiplo di X

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

... E immaginiamo che il valore di "containerHeight" fosse 680px, vorrei un modo per arrotondare a 750px (se il valore era 1007, dovrebbe arrotondare a 1250). Sospetto che ciò richieda una soluzione più complessa di quanto immagino. O forse jQuery ha una funzione integrata che renderà questo possibile?

Suppongo che questo è più di una domanda per la matematica di quanto lo sia una domanda jQuery (ma la mia conoscenza della sintassi jQuery è anche un po 'limitata :)

Qualsiasi idee/bit di aiuto sono molto apprezzate, Grazie!

+0

Possibile duplicato ([arrotondamento a passi di 20 (o X) in JavaScript?] http://stackoverflow.com/questions/14627566/rounding-in-steps-of-20-or-x-in-javascript) – leo

risposta

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

Grazie, James! È perfetto. – LearnWebCode

+0

È importante non che questo non funzioni per i numeri in virgola mobile. –

+0

@MatthewMarlin Per i numeri in virgola mobile, questa soluzione funziona (non aggiunge X.X00000001 ... cosa): https://stackoverflow.com/a/27861660/2441655 (questo è l'arrotondamento piuttosto che il controsoffitto - ma può essere facilmente modificato per usare il soffitto con 'Math.ceil') – Venryx

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

NearestMultiple(1007, 250); //returns 1250 

Vedi esempio a http://jsfiddle.net/SUya9/1/

O quello che James ha detto troppo!

EDIT: Vedo che si voleva radunare tutto il tempo ... Aggiornato il violino, ma James la mise in 1.

+1

Grazie per l'aiuto, che avrebbe funzionato perfettamente! – LearnWebCode

+0

Si noti che questo non funziona per i numeri in virgola mobile. http://jsfiddle.net/SUya9/15/ –

+0

@MatthewMarlin Per i numeri in virgola mobile, questa soluzione funziona (non aggiunge la X.X00000001 ... cosa): https://stackoverflow.com/a/27861660/2441655 (questo è l'arrotondamento piuttosto che il controsoffitto, ma può essere facilmente modificato per utilizzare il soffitto con 'Math.ceil') – Venryx

Problemi correlati