<math.h>
是 C 标准库中的一个头文件,提供了一系列用于数学计算的函数。这些函数涵盖了基本的算术运算、三角函数、对数函数、幂函数、浮点环境控制等等。
<math.h>
函数:
基本算术运算
double fabs(double x):返回 x 的绝对值。
double sqrt(double x):返回 x 的平方根。
double cbrt(double x)(C99起):返回 x 的立方根。
double pow(double base, double exponent):返回 base 的 exponent 次幂。
double exp(double x):返回 e 的 x 次幂(e 是自然对数的底数)。
double log(double x):返回 x 的自然对数。
double log10(double x):返回 x 的以 10 为底的对数。
double expm1(double x)(C99起):返回 exp(x) - 1,用于避免 exp(x) 在 x 接近 0 时导致的精度损失。
double log1p(double x)(C99起):返回 log(1 + x),用于避免 log(1 + x) 在 x 接近 0 时导致的精度损失。
三角函数
double sin(double x):返回 x(以弧度为单位)的正弦值。
double cos(double x):返回 x(以弧度为单位)的余弦值。
double tan(double x):返回 x(以弧度为单位)的正切值。
double asin(double x):返回 x 的反正弦值(以弧度为单位)。
double acos(double x):返回 x 的反余弦值(以弧度为单位)。
double atan(double x):返回 x 的反正切值(以弧度为单位)。
double atan2(double y, double x):返回点 (x, y) 的极坐标角(以弧度为单位)。
双曲函数
double sinh(double x):返回 x 的双曲正弦值。
double cosh(double x):返回 x 的双曲余弦值。
double tanh(double x):返回 x 的双曲正切值。
double asinh(double x)(C99起):返回 x 的反双曲正弦值。
double acosh(double x)(C99起):返回 x 的反双曲余弦值。
double atanh(double x)(C99起):返回 x 的反双曲正切值。
浮点环境控制
int feclearexcept(int excepts)(C99起):清除指定的浮点异常。
int fegetexceptflag(fexcept_t *flagp, int excepts)(C99起):获取当前浮点异常标志。
int feraiseexcept(int excepts)(C99起):触发指定的浮点异常。
int fesetexceptflag(const fexcept_t *flagp, int excepts)(C99起):设置浮点异常标志。
int fetestexcept(int excepts)(C99起):测试指定的浮点异常是否发生。
其他函数
double ceil(double x):返回大于或等于 x 的最小整数值(作为浮点数返回)。
double floor(double x):返回小于或等于 x 的最大整数值(作为浮点数返回)。
double trunc(double x)(C99起):返回 x 的整数部分,去掉小数部分但不进行四舍五入。
double round(double x)(C99起):返回 x 的四舍五入值。
long lrint(double x)(C99起):返回 x 的四舍五入值,转换为 long 类型。
long long llrint(double x)(C99起):返回 x 的四舍五入值,转换为 long long 类型。
double nearbyint(double x)(C99起):返回 x 的舍入值,舍入模式由当前浮点环境决定。
double rint(double x)(C99起):返回 x 的舍入值,舍入到最接近的整数,使用 "偶数舍入" 规则。
double modf(double x, double *iptr):将 x 分解为小数部分和整数部分,小数部分返回,整数部分存储在 iptr 中。
double frexp(double x, int *exp):将 x 分解为尾数和指数,使 x = mantissa * 2^exp,尾数返回,指数存储在 exp 中。
double ldexp(double x, int exp):返回 x * 2^exp。
double fmod(double x, double y):返回 x 除以 y 的余数。
double hypot(double x, double y):返回直角三角形的斜边长度,即 sqrt(x*x + y*y)。
double erf(double x)(C99起):返回 x 的误差函数值。
double erfc(double x)(C99起):返回 1 - erf(x),即补误差函数值。
double lgamma(double x)(C99起):返回 x 的伽玛函数的对数值。
double tgamma(double x)(C99起):返回 x 的伽玛函数值。
示例:
#include <stdio.h>
#include <math.h>
int main() {
double x = 2.0;
double y = 3.0;
// 基本运算
printf("sqrt(%.1f) = %.2f\n", x, sqrt(x));
printf("pow(%.1f, %.1f) = %.2f\n", x, y, pow(x, y));
printf("exp(%.1f) = %.2f\n", x, exp(x));
printf("log(%.1f) = %.2f\n", x, log(x));
printf("log10(%.1f) = %.2f\n", x, log10(x));
// 三角函数
double angle = M_PI / 4; // 45 degrees
printf("sin(%.2f) = %.2f\n", angle, sin(angle));
printf("cos(%.2f) = %.2f\n", angle, cos(angle));
printf("tan(%.2f) = %.2f\n", angle, tan(angle));
// 舍入函数
double z = 5.8;
printf("ceil(%.1f) = %.1f\n", z, ceil(z));
printf("floor(%.1f) = %.1f\n", z, floor(z));
printf("fabs(%.1f) = %.1f\n", z, fabs(z));
return 0;
}