You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:51:02