Ich muß Runde zum Beispiel 6.688689
zu 6.7
, aber es zeigt mir immer 7
.
Meine Methode:
Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or
Math.round(6.688689, 2);
Aber das Ergebnis ist immer das gleiche 7
... Was mache ich falsch?
javascript
rounding
Vitalii Ponomar
quelle
quelle
(6.688689).toFixed(1);
.toFixed
gibt einen String zurück. Stellen Sie sicher, dass Sie das Ergebnis einpackenNumber()
. Siehe akzeptierte Antwort und andere.Antworten:
quelle
Number((456.1235).toFixed(3)) -> 456.123
,Number((1.235).toFixed(2)) -> 1.24
... Dummes JavaSript ...quelle
Math.round(1.005*100)/100
zum Beispiel von MDN1.005 * 100 = 100.49999999999999
(zumindest in der JS-Engine, die ich versucht habe). Das ist der Grund, warum es nicht funktioniert und warum Sie sich niemals darauf verlassen sollten, dass Schwimmer perfekt genau sind.Verwenden Sie
toFixed()
Funktion.quelle
Upd (2019-10). Dank des folgenden Codes von Reece Daniels ist er jetzt als eine Reihe von Funktionen verfügbar, die im erwarteten npm-Paket enthalten sind (siehe).
Sie können die Hilfsfunktion aus dem MDN-Beispiel verwenden . Dann haben Sie mehr Flexibilität:
Upd (15.01.2019). Scheint, als hätten MDN-Dokumente diese Helferfunktionen nicht mehr. Hier ist ein Backup mit Beispielen:
Anwendungsbeispiele:
quelle
Ein
Number
Objekt in JavaScript verfügt über eine Methode, die genau das tut, was Sie benötigen. Diese Methode istNumber.toPrecision([precision])
.Genau wie bei der
.toFixed(1)
Konvertierung wird das Ergebnis in eine Zeichenfolge konvertiert und muss wieder in eine Zahl konvertiert werden. Fertig mit dem+
Präfix hier.einfacher Benchmark auf meinem Laptop:
quelle
1e-10.toPrecision(3)
: "1.00e-10" - Dies rundet auf signifikante Ziffern .Wenn Sie nicht nur,
toFixed()
sondern auchceil()
undfloor()
auf einem Float verwenden möchten, können Sie die folgende Funktion verwenden:Produziert:
UPD:
Der andere mögliche Weg ist folgender:
Produziert:
quelle
Meine erweiterte runde Funktion:
Beispielausgabe:
quelle
Siehe unten
var original = 28.59;
var result=Math.round(original*10)/10
wird zurückkehren Sie kehrt zurück28.6
Hoffe das ist was du willst ..
quelle
quelle
Ich denke, diese Funktion kann helfen.
quelle
Ich denke unten Funktion kann helfen
Verwendung:
roundOff(600.23458,2);
wird zurückkehren600.23
quelle
Wenn Sie sich im Kontext von node.js befinden, können Sie mathjs ausprobieren
quelle
Es gibt die Alternative .toLocaleString () zum Formatieren von Zahlen mit vielen Optionen in Bezug auf Gebietsschemas, Gruppierung, Währungsformatierung und Notationen. Einige Beispiele:
Auf 1 Dezimalstelle runden, einen Float zurückgeben:
Auf 2 Dezimalstellen runden, als Währung mit angegebenem Symbol formatieren , Kommagruppierung für Tausende verwenden:
Format als Länderwährung :
Auf mindestens 3 Dezimalstellen runden, Nullen zur Anzeige zwingen:
Prozentstil für Verhältnisse. Geben Sie * 100 mit% -Zeichen ein
quelle
quelle
Ich habe eine sehr gute Lösung, wenn toFixed () nicht funktioniert.
Beispiel
quelle
Wenn Sie heute Browserify verwenden, müssen Sie Folgendes versuchen: roundTo eine sehr nützliche NPM- Bibliothek
quelle
Kleinere Änderungen an dieser Antwort :
quelle
roundToStep(1.015, 0.001)