2011-12-05 13 views
4

私は米国の国のためにカスタマイズされた数字の形式を持っていることを試みます。これまでのところうまく動作します。カスタマイズされたフランスの番号のフォーマット

// 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"); 

ここに出力があります。

しかし、同じことがフランスではうまくいきません。彼らは.のために,を使用しているので、,のための "スペース"。

次のコードを記述します。

// 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#" 

上記の番号形式をカスタマイズするにはできることはありますか?

答えて

3
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(Locale.FRANCE); 
    NumberFormat goodNumberFormat = new DecimalFormat("#,##0.00#", dfs); 
+0

ああ。私は千のセパレータとして "スペース"を探しています。とにかく、あなたの提案されたソリューションは非常に良いです:) –

+0

しかし、私は好奇心が強いです。ドイツ人またはフランス人が「1ポイント2」を入力する必要がある場合は、テキストフィールドに「1,2」または「1.2」と入力しますか? Integer.parseIntは "1,2"を処理する方法を知っていますか? –

+0

@ Yan Cheng CHEOK:私のソリューションはあなたのために機能しますか? – Tudor

2

Taddaaa!

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"); 
関連する問題