C++ 庫 - <cmath>



C++ 中的<cmath> 標頭檔案提供了一組預定義函式,用於計算常見的數學運算和轉換。

它提供標準數學函式,例如三角函式、指數函式、對數函式和冪函式,以及可應用於標量和向量量的其他有用函式。

包含 <cmath> 標頭檔案

要在 C++ 程式中包含 <cmath> 標頭檔案,可以使用以下語法。

#include <cmath>

<cmath> 標頭檔案的函式

以下是 <cmath> 標頭檔案中所有函式的列表。

三角函式

這些函式處理標準三角計算,如正弦、餘弦和正切。

序號 函式及說明
1 sin(x)

此函式返回角度為 x 弧度的餘弦。

2 cos(x)

此函式返回角度為 x 弧度的正弦。

3 tan(x)

此函式返回角度為 x 弧度的正切。

4 acos(x)

此函式返回 x 的反餘弦的主值,以弧度表示。

5 asin(x)

此函式返回 x 的反正弦的主值,以弧度表示。

6 atan2(x)

此函式返回 x 的反正切的主值,以弧度表示。

7 atan2(y,x)

此函式返回 y/x 的反正切的主值,以弧度表示。

角度的正弦

在下面的示例中,我們將使用 sin() 計算以弧度表示的角度的正弦。

#include <iostream>
#include <cmath>

int main() {
    double angle = 1.0; // Angle in radians
    double result = sin(angle);
    std::cout << "The sine of " << angle << " radians is " << result << std::endl;
    return 0;
}

輸出

The sine of 1 radians is 0.841471

雙曲函式

這些函式是三角函式的雙曲對應物。

序號 函式及說明
1 cosh(x)

此函式返回 x 的雙曲餘弦。

2 sinh(x)

此函式返回 x 的雙曲正弦。

3 tanh(x)

此函式返回 x 的雙曲正切。

4 acosh(x)

此函式返回 x 的非負面積雙曲餘弦。

5 asinh(x)

此函式返回 x 的雙曲餘弦。

6 atanh(x)

此函式返回 x 的面積雙曲正切。

計算雙曲正弦

在下面的示例中,我們將使用 sinh() 計算數字的雙曲正弦。

#include <iostream>
#include <cmath>
int main() {
    double value = 1.0;
    double result = sinh(value);
    std::cout << "The hyperbolic sine of " << value << " is " << result << std::endl;
    return 0;
}

輸出

The hyperbolic sine of 1 is 1.1752

指數和對數函式

這些函式處理指數和對數計算。

序號 函式及說明
1 exp(x)

此函式返回 x 的以 e 為底的指數函式,即 e 的 x 次冪:e^x。

2 frexp(x)

此函式將浮點數 x 分解為其二進位制有效數和 2 的整數指數。

3 log(x)

此函式返回 x 的自然對數。

4 log10(x)

此函式返回 x 的常用(以 10 為底)對數。

5 modf(x)

將 x 分解為整數部分和小數部分。

6 exp2(x)

此函式返回 x 的以 2 為底的指數函式,即 2 的 x 次冪:2^x。

7 ilogb(x)

此函式返回 |x| 的對數的整數部分,使用 RADIX 作為對數的底。

8 log1p(x)

此函式返回 1 加 x 的自然對數。

計算指數值

在下面的示例中,我們將使用 exp() 計算 e^2。計算 e(尤拉數)的給定輸入的冪的指數值。

#include <iostream>
#include <cmath>
int main() {
    double exponent = 2.0;
    double result = exp(exponent);
    std::cout << "The value of e^" << exponent << " is " << result << std::endl;
    return 0;
}

輸出

The value of e^2 is 7.38906

冪函式

這些函式處理與冪和根相關的計算。

序號 函式及說明
1 pow(x,y)

此函式返回底數的指數次冪。

2 sqrt(x)

此函式返回 x 的平方根。

3 cbrt(x)

此函式返回 x 的立方根。

4 hypot(x,y)

此函式返回直角三角形的斜邊,其直角邊為 x 和 y。

冪函式示例

在下面的示例中,我們將使用 pow() 函式返回底數的指數次冪的結果。

#include <iostream>
#include <cmath>
int main() {
    double base = 2.0, exponent = 3.0;
    double result = pow(base, exponent);
    std::cout << base << " raised to the power of " << exponent << " is " << result << std::endl;
    return 0;
}

輸出

2 raised to the power of 3 is 8

誤差和伽馬函式

cmath 庫包含誤差函式 (erf) 和伽馬函式 (tgamma) 等特殊函式,這些函式用於統計、物理等各個領域。

序號 函式及說明
1 erf(x)

此函式返回 x 的誤差函式值。

2 erfc(x)

此函式返回互補誤差函式。

3 tgamma(x)

此函式返回 x 的伽馬函式。

4 lgamma(x)

此函式返回 x 的伽馬函式的絕對值的自然對數。

舍入和餘數函式

這些函式處理舍入和餘數計算。

序號 函式及說明
1 ceil(x)

向上舍入 x,返回不小於 x 的最小整數值。

2 floor(x)

向下舍入 x,返回不大於 x 的最大整數值。

3 round(x)

此函式返回最接近 x 的整數值,中間值舍入遠離零。

4 trunc(x)

將 x 舍入到零,返回大小不超過 x 的最近整數值。

5 fmod(x, y)

返回 numer/denom (x/y) 的浮點餘數,向零舍入。

檢索最小的整數

在下面的示例中,我們將使用 ceil(),它向上舍入浮點數,返回大於或等於輸入的最小整數。

#include <iostream>
#include <cmath>
int main() {
    double value = 3.45;
    double result = ceil(value);
    std::cout << "The ceiling of " << value << " is " << result << std::endl;
    return 0;
}

輸出

The ceiling of 3.45 is 4

浮點操作函式

這些浮點操作函式用於處理浮點數。

序號 函式及說明
1 copysign(x, y)

此函式返回一個值,該值具有 x 的大小和 y 的符號。

2 nan()

此函式返回型別為 double 的靜默 NaN(非數字)值。

3 nextafter(x, y)

此函式返回 x 之後朝 y 方向的下一個可表示的值。

4 nexttoward(x, y)

此函式返回 x 之後朝 y 方向的下一個可表示的值。

最小值、最大值、差值函式

這些函式查詢兩個數字之間的最小值、最大值和絕對差值。

序號 函式及說明
1 fmin(x, y)

此函式返回其引數中的較小者:x 或 y。

2 fmax(x,y)

此函式返回其引數中的較大者:x 或 y。

3 fdim(x, y)

此函式返回 x 和 y 之間的正差。

其他函式

cmath 標頭檔案提供了其他函式,特別是用於處理浮點數。

序號 函式及說明
1 fabs(x)

此函式返回 x 的絕對值:|x|。

2 abs(x)

此函式計算整數或浮點型別的絕對值。

3 fma(x,y,z)

此乘加函式計算 x 和 y 的乘積,然後將 z 加到結果中 (x*y+z)。

廣告