Java BigDecimalの精度をどう設定すればいいですか?

Javaで、正確な10進数の計算を行うためにBigDecimalクラスを使用し、精度を設定することができます。

BigDecimalクラスのコンストラクタは、文字列またはdouble型の値をパラメーターとして受け入れることができます。double型の値が渡される場合、自動的に文字列に変換されます。その後、setScaleメソッドを使用して精度を設定できます。

以下は一つの例です。

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal number1 = new BigDecimal("10.345");
        BigDecimal number2 = new BigDecimal("20.1234");
        
        BigDecimal result = number1.add(number2);
        
        result = result.setScale(2, BigDecimal.ROUND_HALF_UP);
        
        System.out.println(result); // 输出30.47
    }
}

上記の例では、10.345と20.1234を表す2つのBigDecimalオブジェクトnumber1とnumber2を作成しました。そして、addメソッドを使用してこれら2つの数値を加算し、結果をresult変数に保存しました。その後、setScaleメソッドを使用して精度を2に設定し、ROUND_HALF_UPを指定して四捨五入のルールを適用しました。最後に、結果を30.47と出力しました。

注意,setScaleメソッドの最初の引数は精度であり、2番目の引数は使用する丸めモードです。一般的な丸めモードには次のようなものがあります:

  1. ROUND_UP: ゼロから離れた方向に切り上げます。
  2. ROUND_DOWN: ゼロ方向に切り捨て
  3. ROUND_CEILING:正の無限方向への切り上げ
  4. ROUND_FLOOR:-∞に向かって切り捨て
  5. ROUND_HALF_UP:数字を最も近い整数に丸めます。少数第一位が5より大きい場合、切り上げます。それ以外の場合は切り捨てます。
  6. 四捨五入方式:最新の数字の丸め処理(5以下切り捨て)。小数点以下一桁が5以上の場合は切り上げ、そうでなければ切り捨てる。
  7. ROUND_HALF_EVEN:最近数字の四捨五入。残された桁の次の桁が5より大きい場合は切り上げ、次の桁が5未満の場合は切り捨て、次の桁が5であり、かつその後ろのすべての桁が0の場合は切り捨てます。
bannerAds