So runden Sie eine Ganzzahl mit Javascript auf die nächsten 10 auf oder ab

84

Mit Javascript möchte ich eine von einem Benutzer übergebene Zahl auf die nächste 10 runden. Wenn beispielsweise 7 übergeben wird, sollte ich 10 zurückgeben, wenn 33 übergeben wird, sollte ich 30 zurückgeben.

Abs
quelle

Antworten:

164

Teilen Sie die Zahl durch 10, runden Sie das Ergebnis und multiplizieren Sie es erneut mit 10:

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

Gumbo
quelle
12
Diese Technik funktioniert auch mit Math.floor, wenn Sie ein Aufrunden verhindern möchten
Alex W
11
Sie können die Math.ceil-Methode zum Aufrunden verwenden.
Kerem Demirer
24
Math.round(x / 10) * 10
user187291
quelle
19

Wo iist ein int.

Auf das nächste Vielfache von 10 abrunden, dh

11 wird 10
19 wird 10
21 wird 20

parseInt(i / 10, 10) * 10;

Auf das nächste Vielfache von 10 aufrunden, dh

11 wird 20
19 wird 20
21 wird 30

parseInt(i / 10, 10) + 1 * 10;  
CMP
quelle
4
Sollte es nicht sein: (parseInt (i / 10, 10) + 1) * 10; ?
user3924331
@ user3924331, du hast recht. Die richtige Antwort lautet (parseInt (i / 10, 10) + 1) * 10; Bearbeitungen müssen mindestens 6 Zeichen lang sein, damit nicht nur diese beiden Klammern hinzugefügt werden können ... ¯_ (ツ) _ / ¯
Fernando
Bis zur nächsten 10 addiert +10 für den Wert 100, so dass es 110 wird. Bis zur nächsten 10 subtrahiert nicht -10 für 100, also bleibt 100 100.
TitanFighter
6

Ich brauchte etwas Ähnliches, also schrieb ich eine Funktion. Früher habe ich für dezimal die Funktion Runden hier und da ich es auch zum Runden ganzer Zahl verwenden, werde ich es als Antwort auch hier eingestellt. In diesem Fall geben Sie einfach die Nummer ein, die Sie runden möchten, und dann 10, die Nummer, auf die Sie runden möchten.

function roundToNearest(numToRound, numToRoundTo) {
    return Math.round(numToRound / numToRoundTo) * numToRoundTo;
}
cjbarth
quelle
Ich mag es, dass Sie es zu einer Funktion gemacht haben, aber gibt dies eine andere Ausgabe als die akzeptierte Antwort, und wenn nicht, warum haben Sie eine andere Formel verwendet?
RozzA
Es gibt den gleichen Wert zurück, aber die Formel unterscheidet sich, weil sie die Verwendung erleichtert. Wenn Sie beispielsweise auf den nächsten runden möchten .25, können Sie einfach .25als zweites Argument verwenden. Wenn Sie die Formeln in den anderen Antworten verwenden würden, müssten Sie 4als zweites Argument verwenden, wenn Sie aufrunden möchten .25, was nicht intuitiv ist.
CJBarth
kannst du das beweisen Ich habe gerade einige Tests in der Konsole durchgeführt und die akzeptierte Antwort gibt die richtige Antwort .25als function roundTo(x,y){return Math.round(x / y) * y}
zweites
@RozzA, du hast recht. Ich dachte an die Antworten in einer anderen ähnlichen Frage. Ich werde meine Funktion vereinfachen.
CJBarth