原文:decimal | Dart Package (flutter-io.cn)
译时版本:# 2.3.2
Dart Decimals
该库可像 Double 操作一样计算小数,并且不会丢失精度。
例:
// 使用 double
print(0.2 + 0.1); // 显示 0.30000000000000004
// 使用 decimal
print(Decimal.parse('0.2') + Decimal.parse('0.1')); // 显示 0.3
用法
要在代码中使用该库:
- 在
pubspec.yaml中添加依赖:
dependencies:
decimal:
- 在
dart代码中导入:
import 'package:decimal/decimal.dart';
- 使用
Decimal.parse('1.23')开始计算。
提示 : 想使代码精简的话,可以为 Decimal.parse 定义一个快捷方式:
final d = (String s) => Decimal.parse(s);
d('0.2') + d('0.1'); // => 0.3
使用 intl 格式化
可以使用 intl 库格式化小数,
将小数基于 package:decimal/intl.dart 库包装为 DecimalIntl :
import 'package:decimal/decimal.dart';
import 'package:decimal/intl.dart';
main() {
var value = Decimal.parse('1234.56');
var formatter = NumberFormat.decimalPattern('en-US');
print(formatter.format(DecimalIntl(value)));
}
小技巧: 可以定义扩展使其不那么冗长:
extension on Decimal {
String formatWith(NumberFormat formatter) => formatter.format(DecimalIntl(this));
}
main() {
var value = Decimal.parse('1234.56');
var formatter = NumberFormat.decimalPattern('en-US');
print(value.formatWith(formatter));
}
许可证
Apache 2.0