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