<cmath>

<cmath> 是 C++ 标准库中提供的一组数学函数的头文件,它为各种数学计算提供了基本的功能。该头文件包括了多种数学函数和常量,可以用于浮点数的数学运算。<cmath> 是 C++ 中 <math.h> 的标准化版本,并提供了对 C 标准库 <math.h> 函数的兼容性。

1. 常量

  • M_PI: 圆周率常量,表示圆周率π的值。
  • M_E: 自然对数的底数常量,表示 e 的值。
  • M_LOG2E: 2 为底的对数 e 的值。
  • M_LOG10E: 10 为底的对数 e 的值。
  • M_LN2: 自然对数 2 的值。
  • M_LN10: 自然对数 10 的值。

注意: 这些常量的定义可能会依赖于实现和编译器,实际使用中应查阅具体的标准库文档。

2. 基本数学函数

1. 三角函数

  • std::sin(double x): 计算角度 x 的正弦值。
  • std::cos(double x): 计算角度 x 的余弦值。
  • std::tan(double x): 计算角度 x 的正切值。
  • std::asin(double x): 计算 x 的反正弦值,结果范围在 [-π/2, π/2]。
  • std::acos(double x): 计算 x 的反余弦值,结果范围在 [0, π]。
  • std::atan(double x): 计算 x 的反正切值,结果范围在 [-π/2, π/2]。
  • std::atan2(double y, double x): 计算 (x, y) 坐标点的反正切值,结果范围在 [-π, π]。

2. 指数和对数函数

  • std::exp(double x): 计算 e 的 x 次方。
  • std::log(double x): 计算 x 的自然对数(以 e 为底)。
  • std::log10(double x): 计算 x 的以 10 为底的对数。
  • std::pow(double base, double exponent): 计算 base 的 exponent 次方。
  • std::sqrt(double x): 计算 x 的平方根。

3. 绝对值和舍入函数

  • std::abs(int x): 计算整数 x 的绝对值。
  • std::fabs(double x): 计算浮点数 x 的绝对值。
  • std::ceil(double x): 计算不小于 x 的最小整数(向上取整)。
  • std::floor(double x): 计算不大于 x 的最大整数(向下取整)。
  • std::round(double x): 计算最接近 x 的整数(四舍五入)。
  • std::trunc(double x): 计算去掉小数部分后的整数部分。

4. 其他数学函数

  • std::fmod(double x, double y): 计算 x 除以 y 的余数。
  • std::hypot(double x, double y): 计算直角三角形的斜边长度,等于 sqrt(x*x + y*y)
  • std::modf(double x, double* intpart): 将 x 分解为整数部分和小数部分。

3. 使用示例

以下是使用 <cmath> 中一些常见函数的示例:

#include <iostream>
#include <cmath>

int main() {
    double angle = 0.5; // 弧度

    std::cout << "sin(" << angle << ") = " << std::sin(angle) << std::endl;
    std::cout << "cos(" << angle << ") = " << std::cos(angle) << std::endl;
    std::cout << "tan(" << angle << ") = " << std::tan(angle) << std::endl;

    double x = 2.0;
    double y = 3.0;
    std::cout << "pow(" << x << ", " << y << ") = " << std::pow(x, y) << std::endl;
    std::cout << "sqrt(" << x << ") = " << std::sqrt(x) << std::endl;

    double value = -3.5;
    std::cout << "fabs(" << value << ") = " << std::fabs(value) << std::endl;
    std::cout << "ceil(" << value << ") = " << std::ceil(value) << std::endl;
    std::cout << "floor(" << value << ") = " << std::floor(value) << std::endl;
    std::cout << "round(" << value << ") = " << std::round(value) << std::endl;

    return 0;
}

4. 总结

<cmath> 头文件提供了广泛的数学函数和常量,允许在 C++ 程序中进行各种数学计算。通过使用这些函数,你可以进行基本的数学运算、三角函数计算、指数和对数运算等。这些函数的设计旨在提供高效且可靠的数学运算能力,同时保证与 C 语言库的兼容性。