What's the difference between double.toStringA

2020-04-13 18:15发布

问题:

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

回答1:

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.toStringAsPrecision(2);       // 1.0
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


标签: dart