Flutter数字格式化插件number_format_ext的使用
Flutter数字格式化插件number_format_ext的使用
Numberformat
扩展,为 Numberformat
添加了 floor
和 ceil
方法。
支持格式化 num
、Rational
和 Decimal
。
默认情况下,Numberformat
的 format
方法是 round
。这就是我编写此包的原因。
特性
- ✅ 格式化
num
- ✅ 格式化
Decimal
- ✅ 格式化
Rational
- ✅ floor
- ✅ ceil
开始使用
如果你使用的是 decimal: ^1.5.0
,请使用 number_format_ext: ^1.5.0
。
如果你使用的是 decimal: ^2.3.0
,请使用 number_format_ext: ^2.3.0
。
dart pub get number_format_ext
# 或
flutter pub get number_format_ext
使用方法
更多示例请查看:
./example/number_format_ext_example.dart
和 ./test/number_format_ext_test.dart
final f22 = NumberFormat.decimalPattern();
f22.minimumFractionDigits = 2;
f22.maximumFractionDigits = 2;
final d1_19 = Decimal.parse('1.111111111');
print(f22.formatWithCondition(d1_19)); // 1.11 (默认四舍五入)
print(f22.formatWithCondition(d1_19, ceil: true)); // 1.12
final d1_99 = Decimal.parse('1.999999999');
print(f22.formatWithCondition(d1_99)); // 2.00 (默认四舍五入)
print(f22.formatWithCondition(d1_99, floor: true)); // 1.99
额外信息
完整示例
以下是一个完整的示例,展示了如何使用 number_format_ext
插件进行数字格式化:
import 'package:number_format_ext/number_format_ext.dart';
import 'package:decimal/decimal.dart';
import 'package:intl/intl.dart';
import 'package:rational/rational.dart';
void main() {
final f22 = NumberFormat.decimalPattern();
final f28 = NumberFormat.decimalPattern();
f22.minimumFractionDigits = 2;
f22.maximumFractionDigits = 2;
f28.minimumFractionDigits = 2;
f28.maximumFractionDigits = 8;
final rational = Rational.parse('1.999999');
// formatWithCondition 可以处理 Rational 类型
// print(f22.format(rational));
/// !!!
/*
直接使用 double 进行精确计算(例如金融)会导致精度问题。不建议直接使用 double。
请使用 Decimal!或者你可以自定义一些方法。
// 自定义方法。
// 参见: https://levelup.gitconnected.com/floating-point-arithmetic-issue-in-dart-189ccc1a78e8
*/
print(0.3.toString()); // 0.3
print((0.2 + 0.1).toString()); // 0.30000000000000004
print(f28.formatWithCondition(0.3)); // 0.30
print(f28.formatWithCondition(0.2 + 0.1)); // 0.30
print(f28.formatWithCondition(0.2 + 0.1, ceil: true)); // 0.30000001
/// Decimal 是可以的
final d1 = Decimal.fromInt(1);
print(f22.formatDecimalWithCondition(d1)); // 1.00
print(f22.formatDecimalWithCondition(d1, floor: true)); // 1.00
print(f22.formatDecimalWithCondition(d1, ceil: true)); // 1.00
print(f28.formatDecimalWithCondition(d1)); // 1.00
print(f28.formatDecimalWithCondition(d1, floor: true)); // 1.00
print(f28.formatDecimalWithCondition(d1, ceil: true)); // 1.00
final d1_19 = Decimal.parse('1.111111111');
print(f22.formatDecimalWithCondition(d1_19)); // 1.11
print(f22.formatDecimalWithCondition(d1_19, floor: true)); // 1.11
print(f22.formatDecimalWithCondition(d1_19, ceil: true)); // 1.12
print(f28.formatDecimalWithCondition(d1_19)); // 1.11111111
print(f28.formatDecimalWithCondition(d1_19, floor: true)); // 1.11111111
print(f28.formatDecimalWithCondition(d1_19, ceil: true)); // 1.11111112
final d1_08_1 = Decimal.parse('1.000000001');
print(f22.formatDecimalWithCondition(d1_08_1)); // 1.00
print(f22.formatDecimalWithCondition(d1_08_1, floor: true)); // 1.00
print(f22.formatDecimalWithCondition(d1_08_1, ceil: true)); // 1.01
print(f28.formatDecimalWithCondition(d1_08_1)); // 1.00
print(f28.formatDecimalWithCondition(d1_08_1, floor: true)); // 1.00
print(f28.formatDecimalWithCondition(d1_08_1, ceil: true)); // 1.00000001
final d1_99 = Decimal.parse('1.999999999');
print(f22.formatDecimalWithCondition(d1_99)); // 2.00
print(f22.formatDecimalWithCondition(d1_99, floor: true)); // 1.99
print(f22.formatDecimalWithCondition(d1_99, ceil: true)); // 2.00
print(f28.formatDecimalWithCondition(d1_99)); // 2.00
print(f28.formatDecimalWithCondition(d1_99, floor: true)); // 1.99999999
print(f28.formatDecimalWithCondition(d1_99, ceil: true)); // 2.00
}
更多关于Flutter数字格式化插件number_format_ext的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数字格式化插件number_format_ext的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用number_format_ext
插件来格式化数字的示例代码。number_format_ext
是一个用于数字格式化的Flutter插件,支持多种货币和千位分隔符等格式化选项。
首先,确保你已经在pubspec.yaml
文件中添加了number_format_ext
依赖:
dependencies:
flutter:
sdk: flutter
number_format_ext: ^最新版本号 # 请替换为当前最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter项目中使用这个插件。以下是一个简单的示例,展示如何使用NumberFormatExt
类来格式化数字:
import 'package:flutter/material.dart';
import 'package:number_format_ext/number_format_ext.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Number Format Ext Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 示例数字
double number = 1234567.89;
// 使用NumberFormatExt格式化数字
NumberFormatExt numberFormatExt = NumberFormatExt();
// 格式化为千位分隔符
String formattedNumber = numberFormatExt.formatNumber(number, locale: 'en_US');
// 格式化为货币(例如美元)
String formattedCurrency = numberFormatExt.formatCurrency(number, locale: 'en_US', symbol: '\$');
// 格式化为百分比
String formattedPercentage = numberFormatExt.formatPercentage(number / 100, locale: 'en_US');
return Scaffold(
appBar: AppBar(
title: Text('Number Format Ext Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('原始数字: $number'),
SizedBox(height: 16),
Text('千位分隔符格式化: $formattedNumber'),
SizedBox(height: 16),
Text('货币格式化 (美元): $formattedCurrency'),
SizedBox(height: 16),
Text('百分比格式化: $formattedPercentage'),
],
),
),
);
}
}
在这个示例中,我们:
- 创建了一个简单的Flutter应用。
- 使用
NumberFormatExt
类来格式化一个示例数字。 - 将数字格式化为千位分隔符、货币(美元)和百分比。
- 在UI中显示了原始数字和格式化后的数字。
你可以根据需要调整locale
和其他参数,以满足不同地区的数字格式要求。希望这个示例能帮你更好地理解和使用number_format_ext
插件。