java BigDecimal 开三次方
/**
* 可能的方法之一是使用牛顿迭代法来计算。
* 首先,我们需要选择一个初始估计值。一种常见的选择是将 BigDecimal 的值转换为 double 类型,然后使用 double 的开方函数得到一个估计值。
* 然后,我们可以使用以下迭代公式来计算开三次方:
* x = (2 * x + n / (x * x)) / 3
* 其中,x 是上一次迭代的结果,n 是我们要开三次方的 BigDecimal 值。
* 我们可以重复应用这个公式,直到结果收敛(即相邻两次迭代的结果差距小于一个极小值 ε)。
*/
public static BigDecimal cubeRoot(BigDecimal num,int fix) {
double x = num.doubleValue();
double y = Math.pow(x, 1.0 / 3.0);
BigDecimal guess = BigDecimal.valueOf(y);
BigDecimal prev;
do {
prev = guess;
guess = BigDecimal.valueOf(2).multiply(prev)
.add(num.divide(prev.multiply(prev), fix, RoundingMode.HALF_EVEN))
.divide(BigDecimal.valueOf(3), fix, RoundingMode.HALF_EVEN);
} while (prev.subtract(guess).abs().compareTo(BigDecimal.valueOf(EPSILON)) > 0);
return guess;
}
public static void main(String[] args) {
BigDecimal n = new BigDecimal("12345678901234567890123");
BigDecimal cubeRoot = cubeRoot(n,4);
System.out.println(cubeRoot);
}
我成功因为我志在成功
浙公网安备 33010602011771号