2017-06-27 12 views
2

私は、DecimalFormatを使用して通貨値に変換し、小数点記号を変更しますが、小数点記号は無視されます。通貨小数点セパレータが機能しません

class Currency { 
    public static void main (String... args) { 
    DecimalFormat nf =(DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault()); 
    nf.setGroupingUsed(true); 

    DecimalFormatSymbols symbols = nf.getDecimalFormatSymbols(); 
    symbols.setGroupingSeparator(' '); 
    symbols.setCurrencySymbol("EUR"); 
    symbols.setDecimalSeparator('-'); 
    nf.setDecimalFormatSymbols(symbols); 

    System.out.println(nf.format(13000.31)); 
    } 
} 

ので、私は結果がでなければならないことを期待します:13 000から31 EUR私はドイツ語のロケールにいる場合、私は、米国のロケールで午前ならば、それはEUR 13 000から31にする必要があります。しかし、私が見ているのは、13,000,31 EURまたは13,000.31ユーロです。

通貨記号とグループ化区切り記号でうまくいきますが、小数点区切り記号はどのような場合でも無視されます。

なぜ誰かがアイデアを持っていますか?

symbols.setMonetaryDecimalSeparator('-'); 

答えて

4

通貨は、そのカスタム区切りがあります通貨のおかげ

+0

THXを、それが動作:) – dschmidt

4

は、小数点区切り文字を設定するために余分なフィールドがあります。 setMonetaryDecimalSeparatorを使用してください。

+0

THX、それは動作します:) – dschmidt

0

setDecimalSeparatorの代わりにsetMonetaryDecimalSeparatorhttps://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormatSymbols.html#setMonetaryDecimalSeparator(char))を使用してください。 以下はコードが更新されたものです。

class Currency { 
    public static void main (String... args) { 
    DecimalFormat nf =(DecimalFormat) 
    DecimalFormat.getCurrencyInstance(Locale.getDefault()); 
    nf.setGroupingUsed(true); 

    DecimalFormatSymbols symbols = nf.getDecimalFormatSymbols(); 
    symbols.setGroupingSeparator(' '); 
    symbols.setCurrencySymbol("EUR"); 
    symbols.setMonetaryDecimalSeparator('-'); // ! 
    nf.setDecimalFormatSymbols(symbols); 

    System.out.println(nf.format(13000.31)); 
    } 
} 
+0

だけダリウスと私はほぼ同時に投稿された答えを繰り返す特別な理由は? –

関連する問題