Bei einem Double möchte ich es auf eine bestimmte Anzahl von Genauigkeitspunkten nach dem Dezimalpunkt runden, ähnlich wie bei der round () -Funktion von PHP.
Das nächste, was ich in den Dart-Dokumenten finden kann, ist double.toStringAsPrecision (), aber das ist nicht ganz das, was ich brauche, da es die Ziffern vor dem Dezimalpunkt in den Gesamtgenauigkeitspunkten enthält.
Beispiel: Verwenden von toStringAsPrecision (3):
0.123456789 rounds to 0.123
9.123456789 rounds to 9.12
98.123456789 rounds to 98.1
987.123456789 rounds to 987
9876.123456789 rounds to 9.88e+3
Mit zunehmender Größe der Zahl verliere ich entsprechend die Genauigkeit nach der Dezimalstelle.
quelle
5.550.toStringAsFixed(1)
int
statt eines zurückgibtdouble
, z. B.num.parse(50.123.toStringAsFixed(0)) is int
kann dies durch Hinzufügen.toDouble()
am Ende behoben werden .num.toStringAsFixed () Runden. Dieser verwandelt Ihre Zahl (n) in eine Zeichenfolge mit der Anzahl der gewünschten Dezimalstellen (2) und analysiert sie dann in einer süßen Codezeile zurück zu Ihrer Zahl:
quelle
extension NumberRounding on num { num toPrecision(int precision) { return num.parse((this).toStringAsFixed(precision)); } }
Die obigen Lösungen runden Zahlen nicht angemessen. Ich benutze:
quelle
dp(5.550, 1)
korrekt auf5.6
- im Gegensatz zu der beliebtesten Antwort, die eine leicht falsche Antwort von5.5
@brendan hervorhebt.Drucke: 1.23
quelle
Das ist der Schiedsrichter von Dart. ref: https://api.dartlang.org/stable/2.3.0/dart-core/num/toStringAsFixed.html
quelle
Die modifizierte Antwort von @andyw mit Dart Extension-Methoden:
Verwendung:
quelle
Um ein Double in Dart nach dem Dezimalpunkt auf eine bestimmte Genauigkeit zu runden, können Sie die integrierte Dart-Lösung
toStringAsFixed()
verwenden, diese jedoch wieder in Double konvertierenquelle
Ich habe die Methode toStringAsFixed () verwendet, um die Zahl nach dem Dezimalpunkt EX auf bestimmte Zahlen zu runden: double num = 22.48132906 und wenn ich auf zwei Zahlen wie diese gerundet habe: print (num.toStringAsFixed (2);
es druckte 22,48
und als ich auf eine Zahl gerundet habe .. gedruckt 22.5
quelle
Die oben genannten Lösungen funktionieren nicht in allen Fällen. Was für mein Problem funktioniert hat, war diese Lösung, die Ihre Zahl rundet (0,5 zu 1 oder 0,49 zu 0) und ohne Dezimalstellen belässt :
Eingabe: 12.67
Ausgabe: 13
Dieser Link hat auch andere Lösungen
quelle
Sie können verwenden
toStringAsFixed
, um die begrenzten Ziffern nach Dezimalstellen anzuzeigen.toStringAsFixed
Gibt eine Dezimalpunkt-Zeichenfolgendarstellung zurück.toStringAsFixed
akzeptiert ein Argument namens,fraction Digits
das angibt, wie viele Stellen nach der Dezimalstelle angezeigt werden sollen. Hier erfahren Sie, wie Sie es verwenden.quelle
Das funktioniert ziemlich gut
quelle