I want know what's difference between these two methods. I thought toStringAsFixed
trims the number but from the examples in doc, both are rounding the numbers.
Here's the related issue: https://github.com/dart-lang/sdk/issues/25947
In the Dart programming language, double is a data type that stores decimal numbers (fractional numbers). For each double variable, eight bytes are allocated in the memory. If you try to assign any integer value to the double variable then, by default, it will be cast to the double data type.
For converting a String to a double, the parse() static method of double class can be used. String source, [@deprecated double onError(String source)?] );
1. Double.toStringAsPrecision(int)
Converts a num
to a double
and returns a String
representation with exactly precision significant digits.
The parameter precision must be an integer satisfying: 1 <= precision <= 21
.
Examples:
1.59.toStringAsPrecision(1); // 2
1.59.toStringAsPrecision(2); // 1.6
1.59.toStringAsPrecision(3); // 1.59
1.59.toStringAsPrecision(4); // 1.590
1e15.toStringAsPrecision(3); // 1.00e+15
1234567.toStringAsPrecision(3); // 1.23e+6
1234567.toStringAsPrecision(9); // 1234567.00
12345678901234567890.toStringAsPrecision(20); // 12345678901234567168
12345678901234567890.toStringAsPrecision(14); // 1.2345678901235e+19
0.00000012345.toStringAsPrecision(15); // 1.23450000000000e-7
0.0000012345.toStringAsPrecision(15); // 0.00000123450000000000
2. Double.toStringAsFixed(int)
It also rounds the number but after the decimal place and return the result according to the int
value you provide.
double d = 1.59;
String fixed1 = d.toStringAsFixed(1); // 1.6
String fixed2 = d.toStringAsFixed(2); // 1.59
String fixed3 = d.toStringAsFixed(3); // 1.590
String fixed4 = d.toStringAsFixed(4); // 1.5900
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With