NumberFormat指定挪威区域输出格式不符,需正确挪威货币格式
搞定挪威数字(货币)格式显示问题
嘿,我明白你遇到的问题了——用NumberFormat.getNumberInstance(new Locale("no","NO"))格式化数字后,得到的是188 800,99,但你需要的是符合挪威规范的188.800,99对吧?
这是因为Java里no_NO locale的通用数字格式默认用空格作为千位分隔符,但挪威的货币格式确实要求用点来分隔千位、逗号分隔小数。下面给你两种可行的解决方案:
方案一:自定义DecimalFormat(推荐,精准控制格式)
直接通过DecimalFormatSymbols指定分隔符,再搭配格式模式,就能完全按照你的需求输出:
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; public class NorwegianFormatExample { public static void main(String[] args) { // 初始化挪威语的符号配置 DecimalFormatSymbols noSymbols = new DecimalFormatSymbols(new Locale("no", "NO")); // 设置千位分隔符为点 noSymbols.setGroupingSeparator('.'); // 设置小数分隔符为逗号(本来挪威locale默认就是逗号,这里显式指定更清晰) noSymbols.setDecimalSeparator(','); // 定义格式模式:千位分组,保留两位小数 DecimalFormat norwegianFormat = new DecimalFormat("#,##0.00", noSymbols); System.out.println(norwegianFormat.format(188800.99)); // 输出 188.800,99 } }
方案二:使用货币专用格式化(如果需要带货币符号)
如果你是要处理货币,也可以用getCurrencyInstance,不过它会自动带上挪威克朗的符号kr:
import java.text.NumberFormat; import java.util.Locale; public class NorwegianCurrencyExample { public static void main(String[] args) { NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(new Locale("no", "NO")); System.out.println(currencyFormat.format(188800.99)); // 输出 kr 188 800,99 } }
如果不需要货币符号,方案一就更适合你啦。
简单来说,Java的locale默认数字格式和货币格式有区别,通过自定义符号配置就能精准匹配你需要的挪威格式。
内容的提问来源于stack exchange,提问作者learningUser
相关产品推荐
相关产品推荐

