本教程展示了在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
}
parse
和tryParse()
,这两种方法都可以在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语言中如何将字符串转换成双数,反之亦然。
还有,如何在没有科学通知的情况下将长的双倍分数转换成字符串。