Java中使用指定Locale的DecimalFormat时,如何采用默认格式而非指定模式?
关于DecimalFormat默认格式的替代方案
当然可以不用手动指定格式模式,直接复用对应Locale的默认DecimalFormat实例。
你可以通过NumberFormat.getNumberInstance(someLocale)或者NumberFormat.getCurrencyInstance(someLocale)来获取适配指定Locale的默认格式化实例,这两个方法会自动加载对应地区的格式规则,无需手动编写模式字符串。
如果是处理普通数值,代码可修改为:
NumberFormat df = NumberFormat.getNumberInstance(new Locale(someLocale)); // 若需要强制保留两位小数,可添加以下设置 df.setMinimumFractionDigits(2); df.setMaximumFractionDigits(2);
如果是处理货币类数值,使用getCurrencyInstance即可,它会自动适配对应Locale的货币符号与格式规则。
另外,DecimalFormat是NumberFormat的子类,若需要使用DecimalFormat的特有方法,可将获取到的实例强转:
DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(new Locale(someLocale)); df.setMinimumFractionDigits(2); df.setMaximumFractionDigits(2);
这样就无需手动指定"###.00"这类格式模式,直接复用Locale对应的默认格式规则即可。
内容的提问来源于stack exchange,提问作者TSSK
相关产品推荐
相关产品推荐

