在 C 语言中,math.h
头文件定义了各种数学函数和一个宏,用于处理数学运算。这些函数接受 double 类型的参数,并返回 double 类型的结果。
库宏
在 math.h
中定义了唯一的一个宏:
HUGE_VAL
:当函数的结果不可表示为浮点数时,如果是因为结果的幅度太大而无法表示,则函数会设置errno
为ERANGE
,并返回一个由宏HUGE_VAL
或其否定(- HUGE_VAL
)表示的特定的很大的值。
库函数
下面是 math.h
中定义的各种数学函数及其描述:
double acos(double x)
:返回以弧度表示的 x 的反余弦。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = acos(x); printf("acos(%lf) = %lf radians\n", x, result); return 0; }
double asin(double x)
:返回以弧度表示的 x 的反正弦。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = asin(x); printf("asin(%lf) = %lf radians\n", x, result); return 0; }
double atan(double x)
:返回以弧度表示的 x 的反正切。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = atan(x); printf("atan(%lf) = %lf radians\n", x, result); return 0; }
double atan2(double y, double x)
:返回以弧度表示的 y/x 的反正切。
#include <stdio.h> #include <math.h> int main() { double y = 0.5; double x = 0.5; double result = atan2(y, x); printf("atan2(%lf, %lf) = %lf radians\n", y, x, result); return 0; }
double cos(double x)
:返回弧度角 x 的余弦。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = cos(x); printf("cos(%lf) = %lf\n", x, result); return 0; }
double cosh(double x)
:返回 x 的双曲余弦。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = cosh(x); printf("cosh(%lf) = %lf\n", x, result); return 0; }
double sin(double x)
:返回弧度角 x 的正弦。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = sin(x); printf("sin(%lf) = %lf\n", x, result); return 0; }
double sinh(double x)
:返回 x 的双曲正弦。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = sinh(x); printf("sinh(%lf) = %lf\n", x, result); return 0; }
double tanh(double x)
:返回 x 的双曲正切。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; double result = tanh(x); printf("tanh(%lf) = %lf\n", x, result); return 0; }
double exp(double x)
:返回 e 的 x 次幂的值。
#include <stdio.h> #include <math.h> int main() { double x = 2.0; double result = exp(x); printf("exp(%lf) = %lf\n", x, result); return 0; }
double frexp(double x, int *exponent)
:把浮点数 x 分解成尾数和指数。
#include <stdio.h> #include <math.h> int main() { double x = 123.45; int exponent; double mantissa = frexp(x, &exponent); printf("frexp(%lf) = %lf * 2^%d\n", x, mantissa, exponent); return 0; }
double ldexp(double x, int exponent)
:返回 x 乘以 2 的 exponent 次幂。
#include <stdio.h> #include <math.h> int main() { double x = 0.5; int exponent = 3; double result = ldexp(x, exponent); printf("ldexp(%lf, %d) = %lf\n", x, exponent, result); return 0; }
double log(double x)
:返回 x 的自然对数(基数为 e 的对数)。
#include <stdio.h> #include <math.h> int main() { double x = 10.0; double result = log(x); printf("log(%lf) = %lf\n", x, result); return 0; }
double log10(double x)
:返回 x 的常用对数(基数为 10 的对数)。
#include <stdio.h> #include <math.h> int main() { double x = 100.0; double result = log10(x); printf("log10(%lf) = %lf\n", x, result); return 0; }
double modf(double x, double *integer)
:返回小数部分,并设置整数部分。
#include <stdio.h> #include <math.h> int main() { double x = 3.5; double integerPart; double fractionalPart = modf(x, &integerPart); printf("modf(%lf) = integer part: %lf, fractional part: %lf\n", x, integerPart, fractionalPart); return 0 ; }
double pow(double x, double y)
:返回 x 的 y 次幂。
#include <stdio.h> #include <math.h> int main() { double x = 2.0; double y = 3.0; double result = pow(x, y); printf("pow(%lf, %lf) = %lf\n", x, y, result); return 0; }
double sqrt(double x)
:返回 x 的平方根。
#include <stdio.h> #include <math.h> int main() { double x = 25.0; double result = sqrt(x); printf("sqrt(%lf) = %lf\n", x, result); return 0; }
double ceil(double x)
:返回大于或等于 x 的最小的整数值。
#include <stdio.h> #include <math.h> int main() { double x = 4.3; double result = ceil(x); printf("ceil(%lf) = %lf\n", x, result); return 0; }
double fabs(double x)
:返回 x 的绝对值。
#include <stdio.h> #include <math.h> int main() { double x = -4.5; double result = fabs(x); printf("fabs(%lf) = %lf\n", x, result); return 0; }
double floor(double x)
:返回小于或等于 x 的最大的整数值。
#include <stdio.h> #include <math.h> int main() { double x = 4.7; double result = floor(x); printf("floor(%lf) = %lf\n", x, result); return 0; }
double fmod(double x, double y)
:返回 x 除以 y 的余数。
#include <stdio.h> #include <math.h> int main() { double x = 10.5; double y = 3.0; double result = fmod(x, y); printf("fmod(%lf, %lf) = %lf\n", x, y, result); return 0; }
以上是 math.h
库中所有函数的简要介绍和示例代码。这些函数涵盖了常见的数学运算,如三角函数、指数函数、对数函数、取整函数等,可以方便地在 C 语言程序中进行数学计算。