Ich möchte Javascript verwenden, um eine Zahl aufzurunden. Da die Zahl Währung ist, möchte ich, dass sie wie in diesen Beispielen aufgerundet wird (2 Dezimalstellen):
- 192,168 => 192,20
- 192,11 => 192,20
- 192,21 => 192,30
- 192,26 => 192,30
- 192,20 => 192,20
Wie erreicht man das mit Javascript? Die integrierte Javascript-Funktion rundet die Zahl basierend auf der Standardlogik auf (weniger und mehr als 5 zum Aufrunden).
javascript
rounding
Cyberfly
quelle
quelle
ceil()
geben Sie193
es uns. Wir müssen also sicherstellen, dass die Genauigkeit, die wir beibehalten möchten, vor dem Dezimalpunkt liegt. Dann machen wir die inverse Operation, um den "ursprünglichen" Wert wiederherzustellen.192.19999999999997
, können Sie sich.toFixed(1)
bei dernum
Wenig spät, kann aber eine wiederverwendbare Javascript-Funktion für diesen Zweck erstellen:
Rufen Sie die Funktion als auf
quelle
Normale Rundung funktioniert mit einem kleinen Tweak:
Wenn Sie ein Währungsformat beibehalten möchten, können Sie die Zahlenmethode verwenden
.toFixed()
Dies macht es jedoch zu einem String =)
quelle
price.toFixed(2)
Ganz in der Nähe der Antwort von TheEye , aber ich ändere ein wenig, damit es funktioniert:
quelle
Das OP erwartet zwei Dinge:
A. auf die höheren Zehntel aufrunden und
B. auf der Hundertstelstelle eine Null anzeigen (ein typischer Bedarf mit Währung).
Die Erfüllung beider Anforderungen scheint für jede der oben genannten Methoden eine eigene Methode zu erfordern. Hier ist ein Ansatz, der auf der von Suryakiran vorgeschlagenen Antwort aufbaut:
Wichtiger Hinweis: Diese Lösung liefert ein sehr unterschiedliches Ergebnis mit negativen und exponentiellen Zahlen.
Zum Vergleich zwischen dieser und zwei sehr ähnlichen Antworten siehe die folgenden beiden Ansätze. Der erste rundet einfach auf das nächste Hundertstel pro Normal und der zweite einfach auf das nächste Hundertstel (größer).
quelle
ok, dies wurde beantwortet, aber ich dachte, Sie möchten vielleicht meine Antwort sehen, die die Funktion math.pow () einmal aufruft. Ich mag es, Dinge trocken zu halten.
Es fügt alles zusammen. Ersetzen Sie Math.round () durch Math.ceil (), um abzurunden, anstatt abzurunden, was das OP wollte.
quelle
Diese Funktion begrenzt die Dezimalzahl ohne runde Zahl
quelle
Ich habe die Antwort von @AndrewMarshall schon lange verwendet, aber einige Randfälle gefunden. Die folgenden Tests bestehen nicht:
Folgendes verwende ich jetzt, damit sich das Aufrunden richtig verhält:
Quelle: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
quelle
roundUp(37.760000000000005, 4)
sollte sein37.7601
undroundUp(5.83333333, 4)
sollte sein5.8334
. Diese beiden (und Ihre ersten) gelten alle für das von mir bereitgestellte FN.parseInt rundet immer soo ab .....
parseInt () + 1
quelle