Java Math.pow() 與 Math.sqrt()

Math.pow() 用於計算次方,Math.sqrt() 用於計算平方根。

Math.pow() 次方

語法

double Math.pow(double base, double exponent)

基本用法

// 次方計算
System.out.println(Math.pow(2, 3));    // 8.0(2³)
System.out.println(Math.pow(2, 10));   // 1024.0(2¹⁰)
System.out.println(Math.pow(10, 2));   // 100.0(10²)

// 負數次方
System.out.println(Math.pow(2, -1));   // 0.5(2⁻¹ = 1/2)
System.out.println(Math.pow(2, -2));   // 0.25(2⁻² = 1/4)

// 小數次方
System.out.println(Math.pow(4, 0.5));  // 2.0(4^0.5 = √4)
System.out.println(Math.pow(8, 1.0/3)); // 2.0(8^(1/3) = ³√8)

// 特殊情況
System.out.println(Math.pow(5, 0));    // 1.0(任何數的0次方 = 1)
System.out.println(Math.pow(0, 5));    // 0.0

Math.sqrt() 平方根

語法

double Math.sqrt(double a)

基本用法

System.out.println(Math.sqrt(4));     // 2.0
System.out.println(Math.sqrt(9));     // 3.0
System.out.println(Math.sqrt(2));     // 1.4142135623730951
System.out.println(Math.sqrt(100));   // 10.0

// 特殊情況
System.out.println(Math.sqrt(0));     // 0.0
System.out.println(Math.sqrt(-1));    // NaN(負數沒有實數平方根)

其他根號計算

// 立方根
System.out.println(Math.cbrt(8));      // 2.0(³√8)
System.out.println(Math.cbrt(27));     // 3.0(³√27)
System.out.println(Math.cbrt(-8));     // -2.0(支援負數)

// n 次方根:使用 pow
double fourthRoot = Math.pow(16, 1.0/4);  // 2.0(⁴√16)

實用範例

計算兩點距離

public static double distance(double x1, double y1, double x2, double y2) {
    double dx = x2 - x1;
    double dy = y2 - y1;
    return Math.sqrt(dx * dx + dy * dy);
}

// 或使用 Math.hypot()
public static double distance2(double x1, double y1, double x2, double y2) {
    return Math.hypot(x2 - x1, y2 - y1);
}

System.out.println(distance(0, 0, 3, 4));  // 5.0

複利計算

public static double compoundInterest(double principal, double rate, int years) {
    return principal * Math.pow(1 + rate, years);
}

// 本金 10000,年利率 5%,10 年後
double result = compoundInterest(10000, 0.05, 10);
System.out.printf("%.2f%n", result);  // 16288.95

判斷完全平方數

public static boolean isPerfectSquare(int n) {
    if (n < 0) return false;
    int sqrt = (int) Math.sqrt(n);
    return sqrt * sqrt == n;
}

System.out.println(isPerfectSquare(16));  // true
System.out.println(isPerfectSquare(15));  // false

重點整理

  • Math.pow(a, b) 計算 a 的 b 次方
  • Math.sqrt(a) 計算 a 的平方根
  • Math.cbrt(a) 計算 a 的立方根
  • Math.hypot(a, b) 計算 √(a² + b²)
  • 負數的平方根回傳 NaN