倍精度の小数部のフォーマットに問題があります。もし私がdouble値を持っているなら、例えば4.0、代わりに4.00になるように小数をフォーマットする方法
方法の1つは、 NumberFormat を使用することです。
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
出力:
4.00
Java 8では、format
メソッドを使用できます。
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
はfloating
ポイント値に使用されます。2
は、.
より後の小数点以下の桁数を示します。ほとんどのJavaバージョンでは、DecimalFormat
を使用できます。
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
String.format を使用してください。
String.format("%.2f", 4.52135);
String.formatを使用して、これを行うことができます。
double price = 52000;
String.format("$%,.2f", price);
これが@ Vincentの答えと異なるコンマに注目してください。
出力:
$52,000.00
フォーマットのための良い情報源は、主題に関する 公式 のJavaページです。
あなたはいつでも静的メソッドprintf from System.out
を使うことができます - それから対応するフォーマッタを実装します。これにより、他の例で必要となるヒープスペースを節約できます。
例:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
かなり大きなボーナスであるヒープスペースを節約します、それにもかかわらず、私はこの例が他の答えよりはるかに扱いやすいという意見を持っています、特にほとんどのプログラマーはCからprintf関数を知っているので。
new DecimalFormat("#0.00").format(4.0d);
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
別の方法はsetMinimumFractionDigits
クラスのNumberFormat
メソッドを使うことです。
ここでは、基本的に小数点以下の桁数を指定します。
したがって、4.0
を入力すると、指定した量が2であると仮定して、4.00
が生成されます。
しかし、あなたのDouble
入力が指定された量を超える量を含む場合、それは指定された最小量を取り、そして切り上げ/切り捨てられたもう一つの数字を加えるでしょう
例えば、2を指定した4.15465454
は、4.155
を生成します。
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));
以下のいずれかの方法を使用できます
Java.text.DecimalFormat
を使用している場合
DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance();
decimalFormat.setMinimumFractionDigits(2);
System.out.println(decimalFormat.format(4.0));
OR
DecimalFormat decimalFormat = new DecimalFormat("#0.00");
System.out.println(decimalFormat.format(4.0));
単純な文字列形式に変換する場合
System.out.println(String.format("%.2f", 4.0));
上記のコードはすべて4.を出力します
100%動作します。
import Java.text.DecimalFormat;
public class Formatting {
public static void main(String[] args) {
double value = 22.2323242434342;
// or value = Math.round(value*100) / 100.0;
System.out.println("this is before formatting: "+value);
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
}
}
あなたがこれを行うことができる多くの方法があります。それらは以下の通りです:
元の番号が以下のように与えられているとします。
double number = 2354548.235;
NumberFormatを使う:
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(number));
String.formatを使う:
System.out.println(String.format("%,.2f", number));
DecimalFormatとパターンの使用:
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(number);
System.out.println(fString);
DecimalFormatとパターンの使用
DecimalFormat decimalFormat = new DecimalFormat("############.##");
BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
System.out.println(formattedOutput);
すべての場合において、出力は次のようになります。2354548.23
注:
四捨五入中に、フォーマッタにRoundingMode
を追加できます。以下は丸めモードです。
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
これがインポートです:
import Java.math.BigDecimal;
import Java.math.RoundingMode;
import Java.text.DecimalFormat;
import Java.text.NumberFormat;
import Java.util.Locale;