dartlang 中的 double.toStringAsFixed 和 toStringAsPrecision 有什么区别?

mir*_*cal 4 dart

我想知道这两种方法有什么区别。我认为toStringAsFixed修剪了数字,但从文档中的示例来看,两者都对数字进行了四舍五入。

这是相关问题:https : //github.com/dart-lang/sdk/issues/25947

Cop*_*oad 9

1. Double.toStringAsPrecision(int)

将 a 转换num为 adouble并返回String具有精确有效数字的表示形式。

参数 precision 必须是满足以下条件的整数:1 <= precision <= 21

例子:

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
Run Code Online (Sandbox Code Playgroud)

2. Double.toStringAsFixed(int)

它还对数字进行四舍五入,但在小数位后,并根据int您提供的值返回结果。

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
Run Code Online (Sandbox Code Playgroud)