Dart中如何修改NumberFormat分组分隔符实现110 700格式?
Java中用NumberFormat格式化数字为空格分隔的千分位形式
嘿,这个需求其实很好实现,核心就是自定义数字格式化的分组分隔符——把默认的逗号换成空格就行。下面给你两种靠谱的写法:
方法一:直接使用DecimalFormat自定义符号
这种方式更直接,适合明确知道格式化规则的场景:
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; public class NumberFormatExample { public static void main(String[] args) { double myNum = 110700.00; // 初始化符号对象,用来修改分隔符 DecimalFormatSymbols symbols = new DecimalFormatSymbols(); // 把千分位分组符设置为空格 symbols.setGroupingSeparator(' '); // 定义格式化模式:#,### 表示每三位数字分组,小数部分不显示 DecimalFormat formatter = new DecimalFormat("#,###", symbols); // 执行格式化 String result = formatter.format(myNum); System.out.println(result); // 输出:110 700 } }
方法二:基于NumberFormat实例修改
如果你想复用系统默认的NumberFormat配置,只是替换分隔符,可以这么写:
import java.text.NumberFormat; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; public class AnotherExample { public static void main(String[] args) { double myNum = 110700.00; // 获取系统默认的NumberFormat实例 NumberFormat numberFormat = NumberFormat.getInstance(); if (numberFormat instanceof DecimalFormat) { DecimalFormat decimalFormat = (DecimalFormat) numberFormat; // 获取当前的符号配置 DecimalFormatSymbols symbols = decimalFormat.getDecimalFormatSymbols(); // 替换分组符为空格 symbols.setGroupingSeparator(' '); decimalFormat.setDecimalFormatSymbols(symbols); // 确保启用分组功能,并设置不显示小数部分 decimalFormat.setGroupingUsed(true); decimalFormat.setMaximumFractionDigits(0); String result = decimalFormat.format(myNum); System.out.println(result); // 输出:110 700 } } }
关键说明:
setGroupingSeparator(' ')是核心操作,把默认的逗号分隔符换成了空格;- 设置
setMaximumFractionDigits(0)是为了去掉原数字的.00小数部分,刚好得到你要的整数格式; - 两种方法本质都是修改
DecimalFormatSymbols里的分组符,选哪种看你的场景需求就行。
内容的提问来源于stack exchange,提问作者moonvader
相关产品推荐
相关产品推荐

