Flutter/Dart中如何为单一位小数补前导零?求一行代码实现
在Flutter/Dart中实现指定的double格式化需求
可以通过正则表达式结合字符串替换一行代码实现,分两种场景处理:
场景1:处理double类型数字
由于double类型无法区分3.4和3.40(二者数值等价,toString()均输出3.4),格式化逻辑基于其字符串表现:
String formatDouble(double number) => number.toString().replaceAllMapped(RegExp(r'(\.\d)$'), (match) => '.0${match.group(1)!.substring(1)}');
- 输入
3.4→ 输出3.04:正则匹配到末尾的.4,替换为.04 - 输入
3.40(实际作为double等价于3.4) → 输出3.04;若希望这类情况保留3.4,则需改为处理原始输入字符串而非double类型
场景2:处理输入字符串(保留原始小数位数信息)
如果需要区分3.4和3.40,直接处理输入字符串更准确:
String formatDecimalString(String input) => input.replaceAllMapped(RegExp(r'(\.\d)$'), (match) => '.0${match.group(1)!.substring(1)}');
- 输入
"3.4"→ 输出"3.04" - 输入
"3.40"→ 输出"3.40"(符合需求,保持原样) - 输入
"5.123"→ 输出"5.123"(小数部分超过一位,不处理)
内容的提问来源于stack exchange,提问作者aleksander frnczak
相关产品推荐
相关产品推荐

