<math.h>是C函数库中比较重要的一个库,个人收集了一些自己常用的库,并对一些难以理解的函数附带实例或说明。这里我把<math.h>分成了六类,分别是:
三角函数库;
反三角函数库;
双曲函数库;
指数函数库与对数函数库;
幂函数库;
绝对值函数库以及求余函数库。
这里针对这六类分别讲解,相信你一定能很好掌握。
一、三角函数库:
double sin(double x);
double cos(double x);
double tan(double x);
没有现成的cot三角函数,可以使用tan(PI/2-x)来实现。
二、反三角函数库:
double asin(double x);取值范围在[-PI/2,PI/2]之间
double acos(double x);取值范围在[0,PI]之间
double atan(double x);取值范围在(-PI/2,PI/2)之间
double atan2(double y,double);取值范围在(-PI,PI)之间;这是一个不太常见的函数,主要用来返回y/x的反正切值。#define PI 3.14159265
三、双曲函数库:
double sinh(double x);计算双曲正弦
double cosh(double x);计算双曲余弦
double tanh(double x);计算双曲正切
如果你你要问我双曲是干什么的,我没法告诉你,只能告诉你可以参考《高等数学》同济大学第六版上册中有一篇专门描述。再强调一点,以上三类传参都是针对以弧度表示的数值,非角度表示的数值。
四、指数函数库与对数函数库:
double frexp(double value,int *exp);这是一个将value值拆分成小数部分f和(以2为底的)指数部分exp,并返回小数部分f,即f*2exp。其中f取值在0.5~1.0范围或者0。
例如:frexp(24,&exp); => exp=5,返回值f为0.75。double ldexp(double x,int exp);这个函数刚好跟上面那个frexp函数功能相反,它的返回值是x*2exp。
double modf(double value,double *iptr);拆分value值,返回它的小数部分,iptr指向整数部分。
double log(double x);返回以e为底的自然对数。
double log10(double x);返回常用对数。
五、幂函数库:
double pow(double x,double y);返回xy的值。
double exp(double x);返回ey的值。
double sqrt(double x);返回 的值。
六、绝对值函数库以及求余函数库:
double ceil(double x);返回比x大的最小整数
double floor(doulbe x);返回比x小的最大整数
这两个函数比较容易混淆,这里我给大家介绍一种方法,ceil与floor首字母分别是c与f,取值在c与f之间,所以对于ceil函数取最小整数,对于floor函数取最大整数。
double fabs(double x);
int abs(int x);这两个函数分别对实型数据和整型数据取绝对值;其实abs函数也定义在<stdlib.h>库中。
double fmod(double y,double x);考虑到%只适用与整型数据,这里提出一个专门针对实型数据的取余运算的函数。
附:atan2 返回给定的 X 及 Y 坐标值的反正切值。
反正切的角度值等于 X 轴与通过原点和给定坐标点 (Y坐标, X坐标) 的直线之间的夹角。
结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi)。
语法
ATAN2(Y坐标,X坐标)
X坐标 点的 X 坐标。
Y坐标 点的 Y 坐标。
说明
结果为正表示从 X 轴逆时针旋转的角度,结果为负表示从 X 轴顺时针旋转的角度。
1.ATAN2(a, b) 与 ATAN(a/b)稍有不同,ATAN2(a,b)的取值范围介于 -pi 到 pi 之间(不包括 -pi),
而ATAN(a/b)的取值范围介于-pi/2到pi/2之间(不包括±pi/2)。
2.如果 X坐标 和 Y坐标 都为零,ATAN2 返回错误值 #Div/0!。
3.若要用度表示反正切值,请将结果再乘以 180/3.14159。
示例 如果将示例复制到空白工作表中,可能会更易于理解该示例。
-- |