Flutter/Dart 如何将double格式化为带千分位且保留两位小数的字符串
实现方案
你可以直接通过配置NumberFormat的小数位规则实现需求,不需要额外做toStringAsFixed再转double的操作,示例代码如下:
import 'package:intl/intl.dart'; // 初始化格式化器,同时配置千位分隔符和强制两位小数规则 final formatter = NumberFormat.decimalPattern('en') ..minimumFractionDigits = 2 ..maximumFractionDigits = 2; // 直接传入你的double变量即可得到目标字符串 String formattedStr = formatter.format(myDoubleVar);
效果验证
对示例输入的输出结果完全符合预期:
- 100 →
100.00 - 100.5 →
100.50 - 1000 →
1,000.00 - 1000.5 →
1,000.50 - 1000000 →
1,000,000.00 - 1000000.53 →
1,000,000.53
原写法问题说明
你之前的写法会丢失小数位的原因是:toStringAsFixed(2)得到的带两位小数的字符串,经过double.parse转换后,末尾的0会被自动省略(比如"100.00"转成double后变为100.0),而默认的decimalPattern会自动适配小数位长度,整数场景就不会展示小数部分,所以才达不到要求。直接给格式化器配置固定的小数位规则即可解决这个问题。
内容的提问来源于stack exchange,提问作者F.SO7
相关产品推荐
相关产品推荐

