Jak zaokrąglić liczbę całkowitą w górę lub w dół do najbliższej 10 za pomocą JavaScript

84

Używając JavaScript, chciałbym zaokrąglić liczbę przekazaną przez użytkownika do najbliższej dziesiątki. Na przykład, jeśli minie 7, powinienem zwrócić 10, a jeśli 33, powinienem zwrócić 30.

Abs
źródło

Odpowiedzi:

164

Podzielić liczbę przez 10, zaokrąglić wynik i ponownie pomnożyć przez 10:

var number = 33;
console.log(Math.round(number / 10) * 10);

Gumbo
źródło
12
Ta technika działa również przy użyciu Math.floor, jeśli chcesz zapobiec zaokrąglaniu w górę
Alex W
11
Możesz użyć metody Math.ceil, aby zaokrąglić w górę.
Kerem Demirer
24
Math.round(x / 10) * 10
user187291
źródło
20

Gdzie ijest int.

Zaokrąglić w dół do najbliższej wielokrotności 10, tj

11 staje się 10
19 staje się 10
21 staje się 20

parseInt(i / 10, 10) * 10;

Zaokrąglić w górę do najbliższej wielokrotności 10 tj

11 staje się 20
19 staje się 20
21 staje się 30

parseInt(i / 10, 10) + 1 * 10;  
CMP
źródło
4
Nie powinno być: (parseInt (i / 10, 10) + 1) * 10; ?
user3924331
@ user3924331, masz rację. Prawidłowa odpowiedź to (parseInt (i / 10, 10) + 1) * 10; Edycja musi mieć co najmniej 6 znaków, więc nie można dodać tylko tych dwóch nawiasów ... ¯_ (ツ) _ / ¯
Fernando
Do najbliższych 10 dodaje +10 dla wartości 100, więc staje się 110. W dół do najbliższej 10 nie odejmuje -10 dla 100, więc 100 pozostaje 100.
TitanFighter
6

Potrzebowałem czegoś podobnego, więc napisałem funkcję. Użyłem funkcję przecinku zaokrąglenia tutaj , a ponieważ ja również użyć go do całkowitej zaokrąglenia, będę ustawić go jako odpowiedź tutaj też. W takim przypadku po prostu podaj liczbę, którą chcesz zaokrąglić, a następnie 10, liczbę, do której chcesz zaokrąglić.

function roundToNearest(numToRound, numToRoundTo) {
    return Math.round(numToRound / numToRoundTo) * numToRoundTo;
}
cjbarth
źródło
Podoba mi się, że przekształciłeś ją w funkcję, ale czy daje to inne wyniki niż zaakceptowana odpowiedź, a jeśli nie, dlaczego użyłeś innej formuły?
RozzA
Zwraca tę samą wartość, ale formuła jest inna, ponieważ ułatwia jej użycie. Na przykład, jeśli chcesz zaokrąglić do najbliższej .25, możesz po prostu użyć .25jako drugiego argumentu. Gdybyś miał użyć formuł w innych odpowiedziach, musiałbyś użyć 4jako drugiego argumentu, gdy chcesz zaokrąglić do .25, co jest sprzeczne z intuicją.
cjbarth
czy możesz to udowodnić? właśnie przeprowadziłem testy w konsoli i zaakceptowana odpowiedź zwraca poprawną odpowiedź, używając .25jako drugiego argumentu - zrobiłem to w funkcji jednego liniowcafunction roundTo(x,y){return Math.round(x / y) * y}
RozzA
@RozzA, masz rację. Myślałem o odpowiedziach na inne podobne pytanie. Uproszczę moją funkcję.
cjbarth,