2013-06-12 17 views
20

私は自分のプロジェクトで二重の値を使用していますが、ゼロであっても常に最初の2桁の数字を表示したいと思います。この関数を丸めに使用し、値が3.47233322であれば(正確に)3.47を出力します。しかし、私が印刷すると、例えば、値2は2.0を出力します。Java:d​​ouble:常に2桁の数字を表示する方法

public static double round(double d) { 
    BigDecimal bd = new BigDecimal(d); 
    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); 
    return bd.doubleValue(); 
} 

2.00を印刷します。

文字列を使用せずにこれを行う方法はありますか?

ありがとうございます!

EDIT:あなたの回答から(私はあなたに感謝します)私は私が何を探しているのかを明らかにしていないことを理解しています(そして、私はこのことを申し訳ありません):番号の後に2桁あなたが提案したソリューションを使用して...私が欲しいのは、2桁の値を直接2桁で保存することです!だから私がこのような何かをするときSystem.out.println("" + d)(dは値2の私の倍数です)2.00を出力します。

私はこれを行う方法がないと思っています...そうですか?とにかくあなたの答えをありがとう、解決策を知っていれば教えてください!

+3

私は、Javaの店double値方法を変更することができるとは思いません。あなたは、提示されたときにフォーマットされる方法を変更することしかできません。 –

+0

ええ...私はあなたが正しいと思う...私はあなたのユーザーにそれらを示すたびに私の値をフォーマットする必要があります...多くの時間!あなたの答えをありがとう! – aveschini

+0

さて、フォーマッタメソッドを一度書くだけで、私はそれについて心配しません。 ; ) –

答えて

41

あなたはこのようなものを使用することができます:私は本当の答えを必要とし、これはGoogleの上に来たので、実際の質問に答えるために

double d = 1.234567; 
DecimalFormat df = new DecimalFormat("#.00"); 
System.out.print(df.format(d)); 

編集をし、誰かがそれを回答としてマークしましたが、小数点以下が0のときにはうまくいかないという事実にもかかわらず、

+0

私が探しているものを明確にするために私の質問を編集しました。とにかくありがとうございました! – aveschini

+1

与えられた数字が '0.3 'なら引用符で囲まれたコードが見つかりましたので、代わりに'#0.00'というパターンを使用しました。これまでのところうまくいきました –

+0

私にとってはこの答えは実際には機能しません。ここに私が得たものがあります: '13310.0 13676.31 26600.2' – wintermute

17

はこのためにjava.text.NumberFormatを使用します。

NumberFormat nf= NumberFormat.getInstance(); 
nf.setMaximumFractionDigits(2); 
nf.setMinimumFractionDigits(2); 
nf.setRoundingMode(RoundingMode.HALF_UP); 

System.out.print(nf.format(decimalNumber)); 
+0

私が探しているものを明確にするために私の質問を編集しました。とにかくありがとうございました! – aveschini

+0

私は答えを加えました。 – darijan

+0

xxx.00を取得しようとしています – Dexter

3

DecimalFormatは最も簡単なオプションです使用する:

double roundTwoDecimals(double d) { 
     DecimalFormat twoDecimals = new DecimalFormat("#.##"); 
     return Double.valueOf(twoDecimals.format(d)); 
} 

ホープこれはあなたの問題を解決することは...

+0

私はあなたの解決策を今試しました...それは動作しません。私は3を入れて3.0をプリントします。 – aveschini

+0

私の悪いです。私は速すぎて、いつも読んでいなかった。 DecimalFormatを "## 00"に変更してみてください。これはあなたの問題を解決します! –

7

あなたは、単にこれを行うことができます。

double d = yourDoubleValue; 
String formattedData = String.format("%.02f", d); 
+0

これは決して数字を丸めたくない方のための答えです。 – Siavas

+0

私はラウンド後に二重に値を格納したい –

0
java.text.DecimalFormat df = new java.text.DecimalFormat("###,###.##"); 
df.setMaximumFractionDigits(2); 
df.setMinimumFractionDigits(2); 
+0

あなたのコードの説明のビットがいいだろう。 – Sakuto

0
あなたはこのようなものを使用することができ

答えに0を保持する場合: は、書式文字列内(0.00)を使用

double d = 2.46327; 
DecimalFormat df = new DecimalFormat("0.00"); 
System.out.print(df.format(d)); 

出力:2.46

double d = 0.0001; 
DecimalFormat df = new DecimalFormat("0.00"); 
System.out.print(df.format(d)); 

出力:0.00

ただし、「(のDecimalFormat DF =新しいのDecimalFormatを使用している場合0。## ");

double d = 2.46327; 
DecimalFormat df = new DecimalFormat("0.##"); 
System.out.print(df.format(d)); 

出力:2。46

double d = 0.0001; 
DecimalFormat df = new DecimalFormat("0.##"); 
System.out.print(df.format(d)); 

出力:0

関連する問題