Java 自定义法国数字格式
我尝试为美国国家定制数字格式。到目前为止效果还不错Java 自定义法国数字格式,java,Java,我尝试为美国国家定制数字格式。到目前为止效果还不错 // Not something I want. NumberFormat numberFormat0 = NumberFormat.getNumberInstance(Locale.US); System.out.println("US = " + numberFormat0.format(1234.0) + " (I wish to have 1,234.00)"); System.out.p
// Not something I want.
NumberFormat numberFormat0 = NumberFormat.getNumberInstance(Locale.US);
System.out.println("US = " + numberFormat0.format(1234.0) + " (I wish to have 1,234.00)");
System.out.println("US = " + numberFormat0.format(1234.567) + " (I wish to have 1,234.567)");
System.out.println("US = " + numberFormat0.format(1234.5678) + " (I wish to have 1,234.568)\n");
// Yes. Something I want :)
NumberFormat goodNumberFormat = new DecimalFormat("#,##0.00#");
System.out.println("US = " + goodNumberFormat.format(1234.0) + " (I wish to have 1,234.00)");
System.out.println("US = " + goodNumberFormat.format(1234.567) + " (I wish to have 1,234.567)");
System.out.println("US = " + goodNumberFormat.format(1234.5678) + " (I wish to have 1,234.568)\n");
这是输出
US = 1,234 (I wish to have 1,234.00)
US = 1,234.567 (I wish to have 1,234.567)
US = 1,234.568 (I wish to have 1,234.568)
US = 1,234.00 (I wish to have 1,234.00)
US = 1,234.567 (I wish to have 1,234.567)
US = 1,234.568 (I wish to have 1,234.568)
然而,同样的事情对法国并不适用。当他们使用,
表示,表示,表示“空格”
我编写以下代码
// Not something I want.
NumberFormat numberFormat1 = NumberFormat.getNumberInstance(Locale.FRANCE);
System.out.println("FRANCE = " + numberFormat1.format(1234.0) + " (I wish to have 1 234,00)");
System.out.println("FRANCE = " + numberFormat1.format(1234.567) + " (I wish to have 1 234,567)");
System.out.println("FRANCE = " + numberFormat1.format(1234.5678) + " (I wish to have 1 234,567)\n");
// Exception in thread "main" java.lang.IllegalArgumentException: Malformed pattern "# ##0,00#"
NumberFormat goodNumberFormat1 = new DecimalFormat("# ##0,00#");
System.out.println("FRANCE = " + goodNumberFormat1.format(1234.0) + " (I wish to have 1 234,00)");
System.out.println("FRANCE = " + goodNumberFormat1.format(1234.567) + " (I wish to have 1 234,567)");
System.out.println("FRANCE = " + goodNumberFormat1.format(1234.5678) + " (I wish to have 1 234,567)\n");
我得到以下错误
FRANCE = 1 234 (I wish to have 1 234,00)
FRANCE = 1 234,567 (I wish to have 1 234,567)
FRANCE = 1 234,568 (I wish to have 1 234,567)
Exception in thread "main" java.lang.IllegalArgumentException: Malformed pattern "# ##0,00#"
有什么我可以做的,有上述定制的数字格式吗?Taddaaa
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(Locale.FRANCE);
NumberFormat goodNumberFormat = new DecimalFormat("#,##0.00#", dfs);
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator(' ');
NumberFormat goodNumberFormat1 = new DecimalFormat("#,##0.00#", symbols);
System.out.println("FRANCE = " + goodNumberFormat1.format(1234.0) + " (I wish to have 1 234,00)");
System.out.println("FRANCE = " + goodNumberFormat1.format(1234.567) + " (I wish to have 1 234,567)");
System.out.println("FRANCE = " + goodNumberFormat1.format(1234.5678) + " (I wish to have 1 234,567)\n");
哦我正在寻找有“空间”作为分隔符。无论如何,你提出的解决方案很好:)但我很好奇。如果德国人或法国人需要输入“一点2”,他们是否在文本字段中键入“1,2”或“1.2”?Integer.parseInt是否知道如何处理“1,2”?对不起。我是说,双倍。parseDouble@YanCheng CHEOK:Double.parseDouble使用内部语言格式,带有小数点,没有千个分隔符(比如Double.toString)。我不理解这个解决方案。他说他不想指定一个国家。如果你需要法国,为什么要用德国?