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.

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);


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


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;  

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;
}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.