BigDecimalを使用して、価格の値を取得しています。要件は次のようなものです。データベースから取得する値が何であれ、表示される値には小数点が2つ必要です。
例えば:
取得された値は1-1.00として表示されます
フェッチされた値は1.7823です。1.78として表示されます。
私はsetScale(2, BigDecimal.ROUND_HALF_UP)
を使用していますが、それでもいくつかの場所で、DBからのデータが整数の場合、同じものが表示されています!!
DBの値が0の場合、0としてのみ表示されます。それを0.00として表示したい
ありがとう
BigDecimalは不変であり、setScale(2、BigDecimal.ROUND_HALF_UP)を含むその操作は新しいBigDecimalを生成します。正しいコードは
BigDecimal bd = new BigDecimal(1);
// bd.setScale(2, BigDecimal.ROUND_HALF_UP); bd.setScale does not change bd
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
出力
1.00
切り上げ形式を使用できます
BigDecimal bd = new BigDecimal(2.22222);
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP));
これがお役に立てば幸いです。
Javaで数値をフォーマットするには、次を使用できます。
System.out.printf("%1$.2f", d);
dは変数または数値です
または
DecimalFormat f = new DecimalFormat("##.00"); // this will helps you to always keeps in two decimal places
System.out.println(f.format(d));
適切なロケールでNumberFormat
のようなものを format に使用する必要があります
NumberFormat.getCurrencyInstance().format(bigDecimal);
BigDecimal.setScaleは機能します。