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
Markieren Sie denfton
quelle
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?).

alexn
quelle
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
kennebec
quelle
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.

Niet the Dark Absol
quelle
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;
dumm
quelle
Dies rundet 20 bis 30, ist also nicht für den Fall anwendbar10 = 10
TitanFighter