首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言冪運算完全手冊:pow、sqrt 與 n 次方根計算

     編輯:關於C語言

核心庫函數 <math.h>

函數原型說明示例
powdouble pow(double x, double y)計算 xypow(2, 3) → 8
sqrtdouble sqrt(double x)平方根(x ≥ 0)sqrt(9) → 3
cbrtdouble cbrt(double x)立方根(C99)cbrt(27) → 3
hypotdouble hypot(double x, double y)√(x²+y²) 避免溢出hypot(3, 4) → 5

通用 n 次方根公式

n 次方根 = pow(x, 1.0/n)

double root10 = pow(1024, 1.0/10);  // 1024 的 10 次方根 = 2

工程避坑指南

  1. 鏈接數學庫:GCC/Clang 需加 -lm 參數,否則鏈接報錯 undefined reference to 'pow'
  2. 定義域檢查:sqrt(-1) 返回 NaN 並設置 errno = EDOM,生產代碼必須檢查輸入
  3. 精度陷阱:浮點運算不可避免誤差,比較結果請用 fabs(a-b) < epsilon
  4. 整數冪優化:小整數指數用乘法展開或查表,避免 pow 函數調用開銷

進階:快速整數冪模板

long long ipow(long long base, unsigned exp) {
    long long res = 1;
    while (exp) {
        if (exp & 1) res *= base;
        base *= base;
        exp >>= 1;
    }
    return res;
}

二進制分解法,O(log n) 時間,無浮點誤差,適配嵌入式無 FPU 場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved