2012-02-14 9 views
12

szukam sposób zaokrąglić liczbę do następnej najbliższej wielokrotności 250. Tak na przykład, gdybym miał następującą JS:Okrągły zmiennej do następnej najbliższej wielokrotności X

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

... I możemy sobie wyobrazić, że wartość "containerHeight" wynosiła 680px, chciałbym mieć możliwość zaokrąglenia do 750px (jeśli wartość wynosi 1007, powinna zaokrąglić do 1250). Podejrzewam, że wymaga to rozwiązania, które jest bardziej złożone niż się spodziewam. A może jQuery ma wbudowaną funkcję, która sprawi, że będzie to możliwe?

przypuszczam to bardziej pytanie matematyki niż jest to pytanie jQuery (ale moja znajomość jQuery składnia jest nieco ograniczony :)

Wszelkie pomysły/bity pomocy są bardzo cenione, Dzięki!

+0

Możliwy duplikat ([Zaokrąglanie w krokach po 20 (lub X) w JavaScript?] http://stackoverflow.com/questions/14627566/rounding-in- step-of-20-or-x-in-javascript) – leo

Odpowiedz

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

Dzięki, James! To idealne. – LearnWebCode

+0

Ważne jest, aby nie działało to w przypadku liczb zmiennoprzecinkowych. –

+0

@MatthewMarlin Dla liczb zmiennoprzecinkowych to rozwiązanie działa (nie dodaje rzeczy X.X00000001 ...): https://stackoverflow.com/a/27861660/2441655 (to raczej zaokrąglanie niż sufitowanie - ale można go łatwo zmienić, używając sufitu z 'Math.ceil') – Venryx

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

NearestMultiple(1007, 250); //returns 1250 

Patrz przykład na http://jsfiddle.net/SUya9/1/

Albo co powiedział James też!

EDIT: widzę, że chciał zaokrąglić w górę cały czas ... Updated skrzypce, ale James dostał ją w 1.

+1

Dzięki za pomoc, która również zadziałałaby doskonale! – LearnWebCode

+0

Należy zauważyć, że nie działa to w przypadku liczb zmiennoprzecinkowych. http://jsfiddle.net/SUya9/15/ –

+0

@MatthewMarlin Dla liczb zmiennoprzecinkowych to rozwiązanie działa (nie dodaje rzeczy X.X00000001 ...): https://stackoverflow.com/a/27861660/2441655 (to raczej zaokrąglanie zamiast stropu, ale można go łatwo zmienić, aby użyć sufitu z 'Math.ceil') – Venryx

Powiązane problemy