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)。我不理解这个解决方案。他说他不想指定一个国家。如果你需要法国,为什么要用德国?