JavaでBigDecimalの平方根を計算する方法


方法1: Mathクラスのsqrtメソッドを使用する JavaのMathクラスには、double型の平方根を計算するためのsqrtメソッドがあります。しかし、BigDecimalオブジェクトを直接sqrtメソッドに渡すことはできません。そのため、BigDecimalをdoubleに変換してから計算する必要があります。以下にコード例を示します。

import java.math.BigDecimal;
public class Main {
    public static void main(String[] args) {
        BigDecimal number = new BigDecimal("16");
        double result = Math.sqrt(number.doubleValue());
        BigDecimal sqrt = new BigDecimal(result);
        System.out.println(sqrt);
    }
}

このコードでは、BigDecimalオブジェクトの値を16として設定し、Math.sqrtメソッドを使用して平方根を計算しています。計算結果はdouble型の値として得られますが、最終的な結果をBigDecimalオブジェクトとして表示するために再度BigDecimalに変換しています。

方法2: BigDecimalのルートメソッドを使用する Java 9以降では、BigDecimalクラスにルートメソッドが追加されました。このメソッドを使用すると、BigDecimalオブジェクトの平方根を直接計算することができます。以下にコード例を示します。

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class Main {
    public static void main(String[] args) {
        BigDecimal number = new BigDecimal("16");
        BigDecimal sqrt = number.sqrt(new MathContext(10, RoundingMode.HALF_UP));
        System.out.println(sqrt);
    }
}

このコードでは、BigDecimalオブジェクトの値を16として設定し、sqrtメソッドを使用して平方根を計算しています。MathContextクラスを使用して計算の精度と丸めモードを指定しています。この例では、10桁の精度を指定し、丸めモードとしてHALF_UPを使用しています。

以上がJavaでBigDecimalの平方根を計算する方法です。適切な方法を選んで使用してください。