在Dart中将Double转换为String或String转换为double的方法

1,841 阅读3分钟

本教程展示了在Dart和flutter编程语言中,将双数转换为字符串或字符串转换为双数的多种方法。

string ,是一个用双引号或单引号括起来的数字或字符的字符串。在Dart编程中,双数是一种原始的浮点数类型

两者的类型不同,自动转换是不可能的。因此,我们必须手动将字符串转换成双倍数或双倍数转换成字符串,并举例说明

在Dart中用内置的方法将字符串解析为Int很容易。

在Dart中如何将字符串解析为双数的编程实例

我们有多种方法可以进行转换。

  • 在double类中使用parse方法

double 类提供了静态的parse() 方法,接受一个输入字符串,并转换为双倍类型。

语法:

double parse(String str)

Argument 是一个数字的字符串,如果该字符串包含非数字值,它会抛出未发现的错误。FormatException。无效的双数

下面是一个例子

void main() {
  var str = '123.10';
  var number = double.parse(str);
  print(number); // 123.1
  print(number.runtimeType); // double
  print(number == 123.10); // true
}

parse 方法对无效的浮动数字符串抛出错误,如非数字字符和null。

下面的parse 方法抛出了Uncaught Error: FormatException: Invalid double 123.10d

void main() {
  var str='123.1a0d';
  var number = double.parse(str);
  print(number.runtimeType); // double
  print(number==123.10); // true
}
  • double tryParse方法

    tryParse 在double类中是高级的 方法。parse

    它可以处理运行时的异常,如果你传递了一串非数字的无效数字,则返回null。

    下面是一个成功使用double tryParse方法的例子

void main() {
  var str = '123.10';
  var number = double.tryParse(str);
  print(number); // 123.1
  print(number.runtimeType); // double
  print(number == 123.10); // true
}

下面的例子返回null并处理无效的字符串浮动值

void main() {
  var str = '123a.10';
  var number = double.tryParse(str);
  print(number); // null
  print(number.runtimeType); // Null
  print(number == 123.10); // false
}

parsetryParse() ,这两种方法都可以在flutter编程中用于将字符串转换为双数。

例如,如何在Dart或flutter中把双数转换成字符串?

在Dart中,有多种方法将双数转换为字符串。

  • toString()

  • toRadixString()。

  • 用插值语法追加字符串

  • toString()方法

dart中的每个类都提供了toString() 方法。

double 在dart中,每一个类都提供了这个toString() 方法,并返回一个浮动数字的字符串版本。

void main() {
  double number = 12.11;
  String str = number.toString();
  print(str); // 12.11
  print(str.runtimeType); // String
  print(str == '12.11'); // true
}
  • 用插值语法追加字符串

附加一个字符串可以用插值语法来完成。

String interpolation (${})用单引号或双引号括起来。你可以用插值语法追加字符串或纯数字。

下面是一个例子

void main() {
  double number = 12.11;
  String str = '${number}';
  print(str); // 12.11 
  print(str.runtimeType);// String
  print(str == "12.11"); // true
}

在Dart和flutter中,将长双数转换成没有科学符号的字符串

有时,你有一个长浮动值的双倍数,需要转换为字符串。

下面的例子使用toString()string interpolation syntax ,并打印带有科学符号的字符串作为输出。

void main() {
  double number = 0.00000000124211113245266;
  String numToString = number.toString();

  String str = '${number}';
  print(str); // 1.24211113245266e-9
  print(numToString); // 1.24211113245266e-9
}

输出:

1.24211113245266e-9
1.24211113245266e-9

要转换一个没有科学符号的字符串,你可以用toStringAsFixed()方法或十进制解析方法来做。

用这个方法将长双数转换为字符串,限制在20个小数位。

String toStringAsFixed(int fractionDigits)

下面是一个toStringAsFixed的例子

void main() {
  double number = 0.00000000124211113245266;
  String numToString = number.toStringAsFixed(20);
  print(numToString); // 0.00000000124211113245

}

这个方法的唯一缺点是限制在20个分数位,如果你提供的分数位超过20个,它就会抛出以下错误未发现错误。RangeError (fractionDigits):无效值。不在0...20的包容性范围内:23

接下来,使用十进制包

十进制包提供了强大的数字处理能力。

  • 导入十进制包
  • 使用Decimal.parse()方法将双数转换为十进制。
  • 最后,使用append语法将十进制转换为字符串。

下面是一个示例代码

import 'package:decimal/decimal.dart';

void main() {
  double number = 0.00000000124211113245266;
  Decimal decimal = Decimal.parse(number.toString());
  String str = '${number}';
  print(str); // 0.00000000124211113245266

}

总结

综上所述,通过实例了解了在Dart语言中如何将字符串转换成双数,反之亦然。

还有,如何在没有科学通知的情况下将长的双倍分数转换成字符串。