3.4、<math.h>
3.4.1、数学常量
3.4.1.1、M_PI
和其他常量(部分实现支持)
- 功能:数学常量,如 π。
- 示例:(在某些编译器或标准库实现中,M_PI可能没有被定义。需要手动定义M_PI常量来防止报错)
#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
int main()
{
printf("PI的值是:%f\n", M_PI);
return 0;
}
注意:M_PI
并非在所有实现中定义。如果未定义,可以自己定义 #define M_PI 3.14159265358979323846
。
3.4.2、幂函数
3.4.2.1、pow
- 功能:计算
x
的y
次幂。 - 原型:
double pow(double x, double y);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double base = 2.0, exponent = 3.0;
printf("%.2f^%.2f = %.2f\n", base, exponent, pow(base, exponent));
return 0;
}
3.4.2.2、sqrt
- 功能:计算平方根。
- 原型:
double sqrt(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 16.0;
printf("Square root of %.2f is %.2f\n", num, sqrt(num));
return 0;
}
3.4.2.3、cbrt
- 功能:计算立方根。
- 原型:
double cbrt(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 27.0;
printf("Cube root of %.2f is %.2f\n", num, cbrt(num));
return 0;
}
3.4.3、对数函数
3.4.3.1、log
- 功能:计算自然对数(以 e 为底)。
- 原型:
double log(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 2.71828; // e的近似值
printf("Natural log of %.2f is %.2f\n", num, log(num));
return 0;
}
3.4.3.2、log10
- 功能:计算常用对数(以 10 为底)。
- 原型:
double log10(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 100.0;
printf("Log以10为底 %.2f is %.2f\n", num, log10(num));
return 0;
}
3.4.3.3、log2
- 功能:计算以 2 为底的对数。
- 原型:
double log2(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 8.0;
printf("Log以2为底的对数 %.2f 是 %.2f\n", num, log2(num));
return 0;
}
3.4.4、三角函数
3.4.4.1、sin
, cos
, tan
- 功能:计算正弦、余弦、正切值。
- 原型:
double sin(double x);
double cos(double x);
double tan(double x);
- 示例:
#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
int main()
{
double angle = M_PI / 4; // 45 degrees in radians
printf("sin(%.2f) = %.2f\n", angle, sin(angle));
printf("cos(%.2f) = %.2f\n", angle, cos(angle));
printf("tan(%.2f) = %.2f\n", angle, tan(angle));
return 0;
}
3.4.4.2、asin
, acos
, atan
- 功能:计算反正弦、反余弦、反正切值。
- 原型:
double asin(double x);
double acos(double x);
double atan(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double value = 0.707; // Approximately sin(45°)
printf("asin(%.3f) = %.3f radians\n", value, asin(value));
printf("acos(%.3f) = %.3f radians\n", value, acos(value));
printf("atan(%.3f) = %.3f radians\n", value, atan(value));
return 0;
}
3.4.4.3、atan2
- 功能:计算 y/x 的反正切值,结果以弧度为单位。
- 原型:
double atan2(double y, double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double y = 1.0, x = 1.0;
printf("atan2(%.2f, %.2f) = %.2f radians\n", y, x, atan2(y, x));
return 0;
}
3.4.5、双曲函数
3.4.5.1、sinh
, cosh
, tanh
- 功能:计算双曲正弦、双曲余弦、双曲正切值。
- 原型:
double sinh(double x);
double cosh(double x);
double tanh(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double x = 1.0;
printf("sinh(%.2f) = %.2f\n", x, sinh(x));
printf("cosh(%.2f) = %.2f\n", x, cosh(x));
printf("tanh(%.2f) = %.2f\n", x, tanh(x));
return 0;
}
3.4.6、其他数学函数
3.4.6.1、fabs
- 功能:计算绝对值。
- 原型:
double fabs(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = -3.5;
printf("Absolute value of %.2f is %.2f\n", num, fabs(num));
return 0;
}
3.4.6.2、ceil
和 floor
- 功能:
ceil
:向上取整。floor
:向下取整。
- 原型:
double ceil(double x);
double floor(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 3.14;
printf("向上取整 %.2f 是 %.2f\n", num, ceil(num));
printf("向下取整 %.2f 是 %.2f\n", num, floor(num));
return 0;
}
3.4.6.3、round
- 功能:返回四舍五入后的值。
- 原型:
double round(double x);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double num = 3.65;
printf("值 %.2f 四舍五入后是 %.2f\n", num, round(num));
return 0;
}
3.4.6.4、fmod
- 功能:计算浮点数除法的余数。
- 原型:
double fmod(double x, double y);
- 示例:
#include <stdio.h>
#include <math.h>
int main()
{
double x = 5.3, y = 2.0;
printf("%.2f / %.2f 余数是 %.2f\n", x, y, fmod(x, y));
return 0;
}