2012-05-01 6 views
2

DecimalFormatを使用して数値の書式を設定します。 61.73DecimalFormat、paternを使用して整数の最大桁数を設定する方法は?

これは私のコードです:

double number = 345561.7301; 
DecimalFormat formater =    
    (DecimalFormat)DecimalFormat.getInstance(Locale.US);//This locale only  

formater.applyPattern("00.00"); 

System.out.println(formater.format(number)); 

私は望んでいない数は望ましい結果は次のようになり345561.7301ある場合
整数の最大数(分数)の数字は、2
でなければなりませんsetMaximumIntegerDigits()メソッドを使用します。

+0

あなたの現在の解決策はどうなりますか? – Thomas

+0

私は345561.73を取得しますが、私は望みます:61.73 – kenny

+0

'formatter.setMaximumIntegerDigits(2);のように見えますが、あなたが望むものを達成するために最も簡単です。なぜそれを使いたくないの? – anubhava

答えて

0

このシナリオでは、パターンを使用するのは最適ではない可能性があります。私はモジュラス除算 '%'を使用して100の残りの部分を得ることをお勧めします。

double number = 345561.7301 % 100; 
DecimalFormat formater = (DecimalFormat)DecimalFormat.getInstance(Locale.US); 
formater.applyPattern("00.00"); 

System.out.println(formater.format(number)); 
+0

私はさまざまなビジネスロジックを実行できることを知っていますが、これはパターンのみで行うことができるかどうかを知りたかったのです。 – kenny

+0

あなたが意図していなかったことをパターンに強制しようとしています。 – eabraham

1

部分文字列を使用するとどうなりますか?

double number = 345561.7301; 
DecimalFormat formater =    
(DecimalFormat)DecimalFormat.getInstance(Locale.US); //This locale only  
formater.applyPattern("00.00"); 
//formater.setMaximumIntegerDigits(2); // <- don't want to use this 
String tmp = formater.format(number); 
System.out.println(tmp.substring(tmp.length() - 5)); 
+1

なぜ私はあなたがsetMaximumIntegerDigitsを使いたくないのか不思議です。 –

+0

上記の私のコメントを参考にしてください。 – kenny

+0

私はマジックナンバー5をapplyPatternの長さにします。良い解決策。 –

関連する問題