简介
c/c++给我们提供了math.h这样一个头文件,大部分的数学运算都在个头文件有所包含。
c++ 11标准的<math>包含了9个大类58个函数。
三角函数-7(Trigonometric)、双曲线函数-6(Hyperbolic)、指数对数函数-14(Exponential and logarithmic)、幂函数-4(power)、差和伽马函数-4(Error and gamma)
、舍入和余项函数-13(Rounding and remainder)、浮点数操作函数-4(Floating-point manipulation)、最大最小函数-3(minimum maximum)、其他函数-3(other funcion)。
本文章是日常项目中用过的函数整理,,希望增加未介绍的函数加进来的可以评论该文章,作者将进一步完善,分享是一种精神,希望将这一件小事,这一个小的头文件介绍好,感谢每一位读者和评论者。
一 三角函数
二 双曲线函数
三 指数对数函数
四 幂函数
五 差和伽马函数
六 舍入和余项函数
1. ceil
double ceil (double x); float ceil (float x); long double ceil (long double x); double ceil (T x);ceil函数返回一个不小于参数值得最小的整数,通俗的讲是向右取整。
2.floor
double floor (double x); float floor (float x); long double floor (long double x); double floor (T x);floor函数返回一个不大于参数值的最大整数,通俗的激昂是向左取整。
3.trunc
double trunc (double x); float trunc (float x); long double trunc (long double x); double trunc (T x);trunc是向0取整,它为ceil和floor的取整都满足不了的情况提供了一个解决方案。
不知道为什么没有向无穷取整。
4.round
double round (double x); float round (float x); long double round (long double x); double round (T x);round返回一个离参数值最近的整数,当有两个整数距离参数的距离一样的时候,取远离0的那一个。
eg.
round(3.5) = 4;
round(-3.5)=-4;
5.fmod
讲完了取整函数,就可以讲一下这个取余数的函数fmod。
double fmod (double numer , double denom); float fmod (float numer , float denom); long double fmod (long double numer, long double denom); double fmod (Type1 numer , Type2 denom);
fmod = numer - tquot *denom
tquot是一个向0取整的值,
这样当numer>0时,tquot*denom<=numer。从而fmod>=0
当numer<0时,tquot*denom>=numer。从而fmod<=0
这样一来就可以看出,实际上fmod是带有符号的。
七 浮点数操作函数
八 最大最小函数
1.fdim
double fdim (double x , double y); float fdimf (float x , float y); long double fdiml (long double x, long double y);该函数的返回值大于等于零。
当x>y是,返回x-y,否则返回0。
也是此函数可以表示为:return x-y>0?x-y:0
2.fmax、fmin
这两个函数不再介绍了,分别返回两个数中的大、小的值。
九 其他函数
1. fabs
double fabs (double x); float fabs (float x); long double fabs (long double x); double fabs (T x);这个函数还是很有用的,用到的地方很多。
它返回输入值得绝对值。
2.abs
这个函数看上去和fabs有一定的渊源。单从名字上来看,少了‘f’的标识。fabs的f是float的意思。
事实就是这样。abs将返回一个int。也就是对参数取绝对值,然后转换为整形。
3.fma
double fma (double x , double y , double z); float fma (float x , float y , float z); long double fma (long double x, long double y, long double z); double fma (Type1 x , Type2 y , Type3 z);这个函数将返回,x*y+z。乍一看上去,我任务这是一个多么XX的函数,这不是闲着没事儿干吗。
后来又仔细想了想平常所做的数值运算,发现这种形式还真的不少。