Bei einem Double möchte ich es auf eine bestimmte Anzahl von Genauigkeitspunkten nach dem Dezimalkomma runden, ähnlich der Funktion round() 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, weil es die Ziffern vor dem Dezimalkomma in den Gesamtpunkten der Genauigkeit enthält.
Verwenden Sie beispielsweise 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 Kommastelle.
Lösung des Problems
Siehe die Dokumentation für num.toStringAsFixed().
String toStringAsFixed (int Bruchziffern)
Gibt eine Dezimalkomma-String-Darstellung davon zurück.
Konvertiert dies in ein Double, bevor die Zeichenfolgendarstellung berechnet wird.
- Wenn der absolute Wert davon größer oder gleich 10^21 ist, gibt diese Methode eine Exponentialdarstellung zurück, die von this.toStringAsExponential() berechnet wird.
Beispiele:
1000000000000000000000.toStringAsExponential(3); // 1.000e+21
- Andernfalls ist das Ergebnis die ähnlichste Zeichenfolgendarstellung mit genau bruchDigits Stellen nach dem Dezimalkomma. Wenn FraktionDigits gleich 0 ist, wird der Dezimalpunkt weggelassen.
Der Parameter fractionDigits muss eine Ganzzahl sein, die folgende Bedingungen erfüllt: 0 <= fractionDigits <= 20.
Beispiele:
1.toStringAsFixed(3); // 1.000
(4321.12345678).toStringAsFixed(3); // 4321.123
(4321.12345678).toStringAsFixed(5); // 4321.12346
123456789012345678901.toStringAsFixed(3); // 123456789012345683968.000
1000000000000000000000.toStringAsFixed(3); // 1e+21
5.25.toStringAsFixed(0); // 5
Keine Kommentare:
Kommentar veröffentlichen