当前位置:首页 > Java

java中如何求平方根

2026-03-17 20:46:24Java

使用 Math.sqrt() 方法

在 Java 中,Math.sqrt() 是计算平方根的最直接方法。该方法接受一个 double 类型的参数,并返回其平方根,结果也是 double 类型。

double number = 25.0;
double squareRoot = Math.sqrt(number);
System.out.println("平方根: " + squareRoot); // 输出 5.0

处理负数输入

Math.sqrt() 对负数会返回 NaN(Not a Number)。可以通过条件判断避免无效输入:

double number = -25.0;
if (number >= 0) {
    double squareRoot = Math.sqrt(number);
    System.out.println("平方根: " + squareRoot);
} else {
    System.out.println("负数无实数平方根");
}

使用牛顿迭代法(自定义实现)

若需手动实现平方根算法,牛顿迭代法是一种高效方法。以下是一个简单实现:

public static double sqrtNewton(double number) {
    if (number < 0) return Double.NaN;
    double epsilon = 1e-10; // 精度阈值
    double guess = number;
    while (Math.abs(guess * guess - number) > epsilon) {
        guess = (guess + number / guess) / 2.0;
    }
    return guess;
}

使用 BigDecimal 高精度计算

对于需要高精度的场景,BigDecimal 结合牛顿迭代法可实现更精确的结果:

java中如何求平方根

import java.math.BigDecimal;
import java.math.RoundingMode;

public static BigDecimal sqrtBigDecimal(BigDecimal number, int scale) {
    if (number.compareTo(BigDecimal.ZERO) < 0) {
        throw new ArithmeticException("负数无实数平方根");
    }
    BigDecimal guess = number.divide(BigDecimal.valueOf(2), scale, RoundingMode.HALF_UP);
    BigDecimal epsilon = BigDecimal.valueOf(1, scale);
    while (guess.multiply(guess).subtract(number).abs().compareTo(epsilon) > 0) {
        guess = guess.add(number.divide(guess, scale, RoundingMode.HALF_UP))
                     .divide(BigDecimal.valueOf(2), scale, RoundingMode.HALF_UP);
    }
    return guess;
}

性能与精度对比

  • Math.sqrt():最快且满足大多数场景,但精度固定为 double 类型限制。
  • 牛顿迭代法:适合自定义精度或教学目的,性能次于原生方法。
  • BigDecimal:适用于金融等需要高精度的领域,但计算开销较大。

根据需求选择合适的方法即可。

标签: 平方根何求
分享给朋友:

相关文章

如何求随机数java

如何求随机数java

生成随机数的方法 在Java中,生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random() Math.random()方法返回一个double类型的伪随机数,范围在[0.…

java如何求平方根

java如何求平方根

使用 Math.sqrt() 方法 Java 内置的 Math.sqrt() 方法可以直接计算平方根,返回结果为 double 类型。适用于大多数简单场景。 double number…

如何求随机数java

如何求随机数java

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用java.util.Random类 Random类是Java标准库中专门用于生成伪随机数的工具类。通过创建…

java如何求指数

java如何求指数

Java 中求指数的方法 在 Java 中,计算指数可以通过多种方式实现,包括使用内置的数学库、循环或递归方法。以下是几种常见的方法: 使用 Math.pow() 方法 Java 的 Math 类提…