Javascript mit Runde auf die nächste 10 [geschlossen]


73

Ich möchte ganze Zahlen mit JavaScript runden. Zum Beispiel:

10 = 10
11 = 20
19 = 20
24 = 30
25 = 30
29 = 30

30
Wie 10rundet sich möglicherweise auf 20? 15, ja; 14 und darunter würde auf runden 10.
David sagt, Monica am

4
Und was genau hast du versucht?
Oded

2
Ich schlage vor, Sie formulieren Ihre Frage in "Wie runde ich eine ganze Zahl auf die nächsten 10 auf?"
Jay Sullivan

Ich denke, Sie möchten die Funktion Math.ceil (), aber wie David sagte, bin ich mir nicht sicher, wie 10 auf 20 gerundet werden könnte. 11 könnte jedoch mit der oben genannten Funktion.
Adam Levitt

Sieht aus wie Ihre Rundung auf die nächsten 10, aber warum sollten 10 auf 20 runden?
James Hay

Antworten:


150

Dies sollte es tun:

Math.ceil(N / 10) * 10;

Wobei N eine Ihrer Zahlen ist. Dies funktioniert jedoch nicht für Ihren ersten Fall (10 Runden bis 20, aber warum sollte es?).


9
In diesem Fall könnte er tunMath.ceil((N+1) / 10) * 10;
Jay Sullivan

1
Math.ceil gibt "Die kleinste Ganzzahl, die größer oder gleich der angegebenen Zahl ist, zurück." So funktioniert es für alle Fälle ( Math.ceil(10 / 10) * 10 = 10)
NayoR

Alternativ könnte dies auch durch eine einfache Mathematik erfolgen: var result = (Rest = N% 10)? N + (10 Rest): N; (wobei N eine gegebene Zahl ist, ist der Rest eine temporäre Variable, die auf 0 initialisiert wird).
SridharKritha

24

Um eine Zahl auf das nächstgrößere Vielfache von 10 zu runden, addieren Sie eins zur Zahl, bevor Sie den Math.ceil einer Division mit 10 erhalten. Multiplizieren Sie das Ergebnis mit zehn.

Math.ceil ((n + 1) / 10) * 10;

1->10
2->10
3->10
4->10
5->10
6->10
7->10
8->10
9->10
10->20
11->20
12->20
13->20
14->20
15->20
16->20
17->20
18->20
19->20
20->30
21->30
22->30
23->30
24->30
25->30
26->30
27->30
28->30
29->30
30->40
35-> 40
40-> 50
45-> 50
50-> 60
55-> 60
60-> 70
65-> 70
70-> 80
75-> 80
80-> 90
85-> 90
90-> 100
95-> 100
100-> 110

2
Wie können Sie dies mit negativen Werten zum Laufen bringen? am nächsten (330, -5) sollte 225 sein, diese Rückkehr 330: /
Frexuz

1
Es "rundet" auf das nächstgrößere Vielfache von 10, 220-229 sind alle = 230.
kennebec

1
Dies rundet 10 bis 20, gilt also nicht für den Fall 10 = 10
TitanFighter

13

Math.round()rundet auf die nächste ganze Zahl. Um auf eine andere Ziffer zu runden, dividieren und multiplizieren Sie mit Zehnerpotenzen.

Eine solche Methode ist folgende:

function round(num,pre) {
    if( !pre) pre = 0;
    var pow = Math.pow(10,pre);
    return Math.round(num*pow)/pow;
}

Sie können ähnliche Funktionen für floorund erstellen ceiling. Egal was Sie tun, es 10wird nie rund 20.


1
@trincot Danke, dass du den Tippfehler verstanden hast! :)
Niet the Dark Absol

Wofür steht prein diesem Beispiel?
Maylor Taylor

Es ist eine preEntscheidung.
Niet the Dark Absol

Ich muss sagen, das ist eine wirklich gute Antwort.
Ohsully

7

oder dieses

var i = 20;
var yourNumber = (parseInt(i/10, 10)+1)*10;

Dies rundet 20 bis 30, ist also nicht für den Fall anwendbar10 = 10
TitanFighter
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.