2017-03-18 11 views
1

Javaでは、NumberFormat.getCurrencyInstance()を使用して、価格を表す書式付き文字列を取得できます。例えばjava:NumberFormat.getCurrencyInstance()結果の異なる部分を取得

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY); 
System.out.println(nf.format(20.10)); // "20,10 €" 

このフォーマットされた文字列のさまざまな部分を簡単に取得する方法はありますか?すなわち何かのように

integerPart -> 20 
decimalPart -> 10 
currencySymbol -> € 
decimalSeparator -> , 

ありがとう!

+0

:彼らはDecimalFormatSymbolsクラスを使用して取得することができますか? – freedev

答えて

2

あなたは実際には2つの別々のものを求めている:

  1. integerPartdecimalPart入力値に属します。 出力値に関係

    double input = 20.10; 
    int integerPart = (int)input; // 20 
    int decimalPart = (int)((input - integerPart) * 100); // 10 
    
  2. currencySymboldecimalSeparator:彼らはいくつかの簡単な数学を用いて計算することができます。あなたはこのことを行う必要があるのはなぜ

    DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.GERMANY); 
    String currencySymbol = symbols.getCurrencySymbol(); // € 
    char decimalSeparator = symbols.getDecimalSeparator(); // , 
    
+0

ありがとう!しかし、1に完全には同意しません。入力が20.0163であるとすれば、希望のdecimalPartは「02」になります。私はいくつかの処理でまだそれを得ることができることを知っていますが、NumberFormatはすでに仕事をしているので、できるだけ結果を選択したいと思います。 – lznt

+0

@lznt '(int)Math.round((input - integerPart)* 100)'やその他の丸め方法を使用してください。 – shmosel

+0

* NumberFormatはすでにジョブを完了しているので、可能であれば結果を選択したいと思います。*結果は単なる文字列です。確かに、もしあなたが本当に必要なら正規表現でそれを切り刻むことができます。しかし、それは物事を進める逆の方法のように思えます。 – shmosel

関連する問題