java如何求平方根
使用 Math.sqrt() 方法
Java 内置的 Math.sqrt() 方法可以直接计算平方根,返回结果为 double 类型。适用于大多数简单场景。
double number = 25;
double sqrt = Math.sqrt(number); // 结果为 5.0
使用牛顿迭代法
牛顿迭代法是一种手动实现平方根计算的数值方法,适合需要自定义精度或理解算法原理的场景。
public static double sqrtNewton(double number, double precision) {
double guess = number;
while (Math.abs(guess * guess - number) > precision) {
guess = (guess + number / guess) / 2;
}
return guess;
}
// 示例调用
double sqrt = sqrtNewton(25, 0.0001); // 结果接近 5.0
使用 Apache Commons Math 库
对于复杂数学运算,可以引入 Apache Commons Math 库的 FastMath.sqrt() 方法,优化了性能。
import org.apache.commons.math3.util.FastMath;
double sqrt = FastMath.sqrt(25); // 结果为 5.0
处理负数和大数
Math.sqrt() 对负数会返回 NaN,需额外处理。大数运算可使用 BigDecimal 提高精度。
double number = -25;
double sqrt = (number < 0) ? Double.NaN : Math.sqrt(number);
// BigDecimal 示例
import java.math.BigDecimal;
import java.math.MathContext;
BigDecimal num = new BigDecimal("25");
BigDecimal sqrt = num.sqrt(new MathContext(10)); // 精度为10位
性能优化场景
若需频繁计算整数平方根且范围有限,可预计算并缓存结果到查找表中,以空间换时间。


