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番目の引数は使用する丸めモードです。一般的な丸めモードには次のようなものがあります:
- ROUND_UP: ゼロから離れた方向に切り上げます。
- ROUND_DOWN: ゼロ方向に切り捨て
- ROUND_CEILING:正の無限方向への切り上げ
- ROUND_FLOOR:-∞に向かって切り捨て
- ROUND_HALF_UP:数字を最も近い整数に丸めます。少数第一位が5より大きい場合、切り上げます。それ以外の場合は切り捨てます。
- 四捨五入方式:最新の数字の丸め処理(5以下切り捨て)。小数点以下一桁が5以上の場合は切り上げ、そうでなければ切り捨てる。
- ROUND_HALF_EVEN:最近数字の四捨五入。残された桁の次の桁が5より大きい場合は切り上げ、次の桁が5未満の場合は切り捨て、次の桁が5であり、かつその後ろのすべての桁が0の場合は切り捨てます。