私はプロジェクトでdouble値を使用し、最初の2桁の数字がゼロであっても常に表示したいと思います。この関数を丸めに使用し、印刷する値が3.47233322の場合、(正しく)3.47を印刷します。しかし、たとえば、値2を印刷すると2.0が印刷されます。
_public static double round(double d) {
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
_
2.00を印刷したい!
文字列を使用せずにこれを行う方法はありますか?
ありがとう!
編集:あなたの答えから(私はあなたに感謝します)提案された...私が欲しいのは、2つの値を直接ダブル値に保存することです!このようにSystem.out.println("" + d)
(dは値2のdouble)のようなことをすると、2.00が出力されます。
私はこれを行う方法はないと考え始めています...そうですか?とにかく答えてくれてありがとう、解決策を知っているなら教えてください!
次のようなものを使用できます。
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.00");
System.out.print(df.format(d));
実際に質問に答えるように編集しました。実際の回答が必要で、これがGoogleで出てきて、小数が0のときにこれが機能しなかったにもかかわらず、誰かが答えとしてマークしました。
使用 Java.text.NumberFormat
このため:
NumberFormat nf= NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);
System.out.print(nf.format(decimalNumber));
これを簡単に行うことができます:
double d = yourDoubleValue;
String formattedData = String.format("%.02f", d);
DecimalFormatは、使用する最も簡単なオプションです。
double roundTwoDecimals(double d) {
DecimalFormat twoDecimals = new DecimalFormat("#.##");
return Double.valueOf(twoDecimals.format(d));
}
これで問題が解決することを願っています...
Java.text.DecimalFormat df = new Java.text.DecimalFormat("###,###.##");
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
このようなものを使用できます:
答えにも0を保持する場合:Stringの形式で(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 = new 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