首页 > 解决方案 > 带有区域设置的数字格式给出错误的输出

问题描述

我想要挪威货币格式。我的代码是

NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("no","NO"));
        System.out.println(numberFormat.format(188800.99));

它给出了输出 188 800,99。但是挪威数字模式是 188.800,99 https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html

标签: javanumberslocale

解决方案


我不认为给定国家的模式是在官方文件/标准中定义的。在您提供的链接中,挪威的正确模式确实是 188.800,99,但是当我在维基百科上查看时,它说 188 800,99 在挪威是正确的格式。

作为一种解决方案,您可以搜索NumberFormat适合您需要的解决方案,也可以创建自己的解决方案,如下所示:

DecimalFormat numberFormat = new DecimalFormat("#,##0.00");
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(',');
decimalFormatSymbols.setGroupingSeparator('.');
numberFormat.setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(numberFormat.format(1881212800.9));

它将数字打印为1.881.212.800,90。在该模式#,##0.00中,散列表示可选数字和零所需数字。在这种情况下,逗号左边总是至少有一个数字,右边有两个。


推荐阅读