【C语言】math.h中的三角函数
在C语言中,<math.h> 头文件提供了许多数学函数,包括常用的三角函数。这些函数通常接受和返回 double 类型的值(也有 float 和 long double 版本,如 sinf 和 sinl)。以下是主要的三角函数及其参数说明:
1. 基本三角函数
(参数以弧度为单位,而非角度)
-
double sin(double x)
计算正弦值,x为弧度值。 -
double cos(double x)
计算余弦值,x为弧度值。 -
double tan(double x)
计算正切值,x为弧度值。
示例
#include <stdio.h>
#include <math.h>
int main() {
double radian = M_PI / 4; // 45度对应的弧度
printf("sin(π/4) = %f\n", sin(radian)); // 输出 0.707107
printf("cos(π/4) = %f\n", cos(radian)); // 输出 0.707107
printf("tan(π/4) = %f\n", tan(radian)); // 输出 1.000000
return 0;
}
2. 反三角函数
(返回值是弧度,范围在特定区间内)
-
double asin(double x)
计算反正弦值,x需在[-1, 1]范围内,返回值范围[-π/2, π/2]。 -
double acos(double x)
计算反余弦值,x需在[-1, 1]范围内,返回值范围[0, π]。 -
double atan(double x)
计算反正切值,返回值范围[-π/2, π/2]。 -
double atan2(double y, double x)
计算y/x的反正切值,并正确处理象限,返回值范围[-π, π]。
示例:
double val = 0.5;
printf("asin(0.5) = %f rad\n", asin(val)); // 输出 0.523599 (约30度)
printf("atan2(1,1) = %f rad\n", atan2(1, 1)); // 输出 0.785398 (π/4)
3. 双曲函数
-
double sinh(double x)
计算双曲正弦值。 -
double cosh(double x)
计算双曲余弦值。 -
double tanh(double x)
计算双曲正切值。
4. 角度与弧度转换
<math.h> 没有直接提供角度和弧度转换的函数,但可以手动转换:
double degrees = 45;
double radians = degrees * (M_PI / 180.0); // 角度转弧度
double back_to_degrees = radians * (180.0 / M_PI); // 弧度转角度
//或者使用宏
#define M_PI (3.1415926)
#define deg_to_rad(x) ((x/180.0)*M_PI)
注意事项:
-
参数单位:三角函数使用弧度,需将角度转换为弧度(如
M_PI是 π 的宏定义)。 -
返回值范围:反三角函数的返回值是弧度,需注意范围(如
asin的结果在-π/2到π/2之间)。 -
精度问题:
-
使用
double类型时,函数名为sin,cos等。 -
使用
float时,函数名为sinf,cosf等。 -
使用
long double时,函数名为sinl,cosl等。
-
-
编译时链接数学库:
在Linux/GCC下编译需添加-lm选项:gcc program.c -o program -lm
完整示例(角度转弧度计算):
#include <stdio.h>
#include <math.h>
int main() {
double angle = 30.0; // 30度
double radians = angle * (M_PI / 180.0);
printf("sin(30°) = %f\n", sin(radians)); // 输出 0.500000
return 0;
}
如果需要处理角度,建议封装转换函数以提高代码可读性。

浙公网安备 33010602011771号