为了更好的用计算机帮助我们运算,首先要了解自己使用的库中有什么方法,否则就会做会多费力不讨好的重复工作。
本篇博文我们来了解C/C++标准库的math函数,以VS2013为例。
官方文档链接可查阅博文 https://blog.csdn.net/wenhao_ir/article/details/125642013
第三方比较好的文档:https://www.nhooo.com/cpp/cpp-library-function-cmath.html
math.h文件在下面的路径中:
E:\Program Files\VS2013\VC\include\math.h
这个math.h文件百度网盘下载链接:
https://pan.baidu.com/s/1TJH0Zo4cRHsGwbYlNIiLdw?pwd=gxi5
打开它,然后从469行开始遍历一遍这里面的函数。
在C++的代码中建议引用文件cmath
VS2013中的cmath百度网盘下载链接:
https://pan.baidu.com/s/1NZClfWR5ARG0WNdOOe0mZQ?pwd=wb7i
#include <cmath>
引入文件cmath的作用:它包括标准 C 库标头 <math.h> ,并将关联的名称添加到 std 命名空间。
从件cmath的内容和作用来看,最终咱们要遍历的函数的声明和原型还是在math.h中,所以我们还是遍历math.h。
目录
- 001-int abs(int _X):返回int _X的绝对值
- 002-long labs(long _X):返回long _X的绝对值
- 003-long long llabs(long long _X):返回long long _X的绝对值
- 004-double acos(double _X):返回double _X的反余弦值
- 005-double acosh(double _X):返回double _X的反双曲余弦值
- 006-double asin(double _X):返回double _X的反正弦值
- 007-double asinh(double _X):返回double _X的反双曲正弦值
- 008-double atan(double _X):返回double _X的反正切值
- 009-double atanh(double _X):返回double _X的反双曲正切值
- 010-double atan2(double y, double x):返回给定的y及x坐标值的反正切值 atan(y/x)
- 011-double cbrt(double _X):返回double _X的立方根
- 012-double copysign(double _X, double _Y):返回一个由 _X,的绝对值和_Y的符号组成的数
- 013-double cos(double _X)::返回double _X的余弦值
- 014-double cosh(double _X):返回double _X的双曲余弦值
- 015-double erf(double _X):返回double _X的误差函数值
- 016-double erfc(double _X):返回double _X的互补误差函数值
- 017-double exp(double _X):返回自然常数e的_X次幂
- 018-double exp2(double _X):返回2的_X次幂
- 019-double expm1(double _X):返回自然常数e的_X次幂减1的值
- 020-double fabs(double _X):返回double _X的绝对值
- 021- double fdim(double _X, double _Y):返回x和y之间的正数差
- 022-double fma(double _X, double _Y, double _Z):返回 (x * y) + z的值
- 023-double fmax(double _X, double _Y):返回x或y中较大的值
- 024-double fmin(double _X, double _Y):返回x或y中较小的值
- 025-double fmod(double _X, double _Y):fmod 返回x/y的余数
- 026-int ilogb(double _X):返回x的以2为底的对数值,并将这个对数值转化为int型
- 027-double lgamma(double _X):返回伽玛函数在x处的值的绝对值的自然对数
- 028-long long llrint(double _X):使用当前舍入模式和方向将指定浮点值舍入到最接近的整数值。
- 029-long long llround(double _X):将浮点值舍入为最接近的整数(应该是四舍五入吧?)
- 030-double log(double _X):返回x以自然数e为底的对数值
- 031-double log10(double _X):返回x以10为底的对数值
- 032-double log1p(double _X):返回(x+1)以自然数e为底的对数值
- 033-double log2(double _X):返回x以2为底的对数值
- 034-double logb(double _X):返回|x|以FLT_RADIX值为底数的对数值
- 035-long lrint(double _X):使用当前舍入模式和方向将指定浮点值舍入到最接近的整数值。
- 036-long lround(double _X):返回最接近参数(应该是四舍五入)的long int值
- 037-double nan(const char *):返回NaN值
- 038-double nearbyint(double _X):将指定的浮点值舍入为整数
- 039-double nextafter(double _X, double _Y):返回x在y方向上的下一个可表示值
- 040-double nexttoward(double _X, long double _Y):返回x在y方向上的下一个可表示值
- 041-double pow(double _X, double _Y):返回x的y次方幂值
- 042-double remainder(double _X, double _Y):计算两个浮点值的商的余数
- 043-double remquo(double _X, double _Y, int *_Z):计算x / y的浮点余数,并且还将商存储到传递给它的指针
- 044-double rint(double _X):使用当前的舍入模式将参数舍入为整数值
- 045-double round(double _X):返回最接近参数的整数值(这个是四舍五入吧)
- 046-double scalbln(double _X, long _Y):将浮点数x乘以 FLT_RADIX的y次整数幂
- 047-double scalbn(double _X, int _Y):将浮点数x乘以 FLT_RADIX的y次整数幂
- 048-double sin(double _X):返回x的正弦值
- 049-double sinh(double _X):返回X的双曲正弦值
- 050-double sqrt(double _X): 返回X的平方根
- 051-double tan(double _X):返回X的正切值
- 052-double tanh(double _X): 返回X的双曲正切值
- 053-double tgamma(double _X):返回伽玛函数在x处的值
- 054-double trunc(double _X):返回X的整数部分
- 055-double atof(const char *_String):将字符串转换为双精度浮点值
- 56-double ceil(double _X):将x向正无穷方向舍入到最接近的整数
- 57-double floor(double _X):向负无穷方向近似取整
- 58-double frexp(double _X, int * _Y):返回x的尾数和指数
- 59-double ldexp(double _X, int exp):返回x * (2^exp)的值
001-int abs(int _X):返回int _X的绝对值
说明:如果对浮点数取绝对值,用第020个函数fabs()
示例代码:略。
002-long labs(long _X):返回long _X的绝对值
说明和示例代码:略。
003-long long llabs(long long _X):返回long long _X的绝对值
说明和示例代码:略。
004-double acos(double _X):返回double _X的反余弦值
说明和示例代码:略。
005-double acosh(double _X):返回double _X的反双曲余弦值
说明和示例代码:略。
006-double asin(double _X):返回double _X的反正弦值
说明和示例代码:略。
007-double asinh(double _X):返回double _X的反双曲正弦值
说明和示例代码:略。
008-double atan(double _X):返回double _X的反正切值
说明和示例代码:略。
009-double atanh(double _X):返回double _X的反双曲正切值
说明和示例代码:略。
010-double atan2(double y, double x):返回给定的y及x坐标值的反正切值 atan(y/x)
详情见博文 https://blog.csdn.net/wenhao_ir/article/details/125607783中的4-04函数
011-double cbrt(double _X):返回double _X的立方根
说明和示例代码:略。
012-double copysign(double _X, double _Y):返回一个由 _X,的绝对值和_Y的符号组成的数
详情见博文 https://blog.csdn.net/wenhao_ir/article/details/125607783中的2-03函数
013-double cos(double _X)::返回double _X的余弦值
说明和示例代码:略。
014-double cosh(double _X):返回double _X的双曲余弦值
说明和示例代码:略。
015-double erf(double _X):返回double _X的误差函数值
关于误差函数,参考下面这两个链接:
https://blog.csdn.net/qq_32649321/article/details/122945361
https://www.docin.com/p-1190178420.html
示例代码:略。
016-double erfc(double _X):返回double _X的互补误差函数值
说明和示例代码:略。
017-double exp(double _X):返回自然常数e的_X次幂
说明和示例代码:略
018-double exp2(double _X):返回2的_X次幂
说明和示例代码:略
019-double expm1(double _X):返回自然常数e的_X次幂减1的值
说明和示例代码:略
020-double fabs(double _X):返回double _X的绝对值
说明:如果对int型取绝对值用第001个函数abs()
示例代码:略
021- double fdim(double _X, double _Y):返回x和y之间的正数差
示例代码:略
022-double fma(double _X, double _Y, double _Z):返回 (x * y) + z的值
说明:将两个值相乘,添加第三个值,然后舍入结果,而不会由于中间舍入而丢失任何精度。
示例代码:略
023-double fmax(double _X, double _Y):返回x或y中较大的值
说明和示例代码:略
024-double fmin(double _X, double _Y):返回x或y中较小的值
说明和示例代码:略
025-double fmod(double _X, double _Y):fmod 返回x/y的余数
说明和示例代码:略
026-int ilogb(double _X):返回x的以2为底的对数值,并将这个对数值转化为int型
说明和示例代码:略
027-double lgamma(double _X):返回伽玛函数在x处的值的绝对值的自然对数
说明和示例代码:略
028-long long llrint(double _X):使用当前舍入模式和方向将指定浮点值舍入到最接近的整数值。
详细的说明和示例代码见博文 :https://blog.csdn.net/cumubi7552/article/details/107794824
C ++中的lrint()函数使用当前的舍入模式将参数舍入为整数值。当前的舍入模式由fesetround()函数确定。
029-long long llround(double _X):将浮点值舍入为最接近的整数(应该是四舍五入吧?)
说明和示例代码:略
030-double log(double _X):返回x以自然数e为底的对数值
说明和示例代码:略
031-double log10(double _X):返回x以10为底的对数值
说明和示例代码:略
032-double log1p(double _X):返回(x+1)以自然数e为底的对数值
说明和示例代码:略
033-double log2(double _X):返回x以2为底的对数值
说明和示例代码:略
034-double logb(double _X):返回|x|以FLT_RADIX值为底数的对数值
通常,FLT_RADIX为2,因此对于正数值,logb()等效于log2()
示例代码:略
035-long lrint(double _X):使用当前舍入模式和方向将指定浮点值舍入到最接近的整数值。
说明:函数lrint()与函数llrint()最大的细微差别在于返回值类型的不对,函数lrint()的返回值类型为long,而函数llrint()的返回值类型为long long型。
036-long lround(double _X):返回最接近参数(应该是四舍五入)的long int值
说明和示例代码:略
037-double nan(const char *):返回NaN值
说明:如果字符串为空,则nan()函数将返回通用NaN值。如果字符串不为空,则返回基于字符串的NaN值
详情见链接:https://www.nhooo.com/cpp/cpp-library-function-cmath-nan.html
038-double nearbyint(double _X):将指定的浮点值舍入为整数
舍入方式为fegetround()函数指示舍入的方法。
示例代码:略
039-double nextafter(double _X, double _Y):返回x在y方向上的下一个可表示值
说明和示例代码:略
040-double nexttoward(double _X, long double _Y):返回x在y方向上的下一个可表示值
nextafter()和nexttoward()的细微不同在于输入参数y的类型。
041-double pow(double _X, double _Y):返回x的y次方幂值
说明和示例代码:略
042-double remainder(double _X, double _Y):计算两个浮点值的商的余数
感觉这个的计算方法应该是和博文 https://blog.csdn.net/wenhao_ir/article/details/125607783中的方法是一样的。应该同样不是常规余数。
043-double remquo(double _X, double _Y, int *_Z):计算x / y的浮点余数,并且还将商存储到传递给它的指针
说明和示例代码:略
044-double rint(double _X):使用当前的舍入模式将参数舍入为整数值
C ++中的rint()函数使用当前的舍入模式将参数舍入为整数值。当前的舍入模式由函数fesetround()确定。
说明:函数rint()与函数lrint()和函数llrint()最大的细微差别在于返回值类型的不对,函数rint()的返回值和double型、函数lrint()的返回值类型为long,而函数llrint()的返回值类型为long long型。
示例代码:略
045-double round(double _X):返回最接近参数的整数值(这个是四舍五入吧)
说明和示例代码:略
046-double scalbln(double _X, long _Y):将浮点数x乘以 FLT_RADIX的y次整数幂
说明和示例代码:略
047-double scalbn(double _X, int _Y):将浮点数x乘以 FLT_RADIX的y次整数幂
要注意:scalbln()的y为long型,scalbn()的y为int型。
示例代码:略
048-double sin(double _X):返回x的正弦值
说明和示例代码:略
049-double sinh(double _X):返回X的双曲正弦值
说明和示例代码:略
050-double sqrt(double _X): 返回X的平方根
说明和示例代码:略
051-double tan(double _X):返回X的正切值
说明和示例代码:略
052-double tanh(double _X): 返回X的双曲正切值
说明和示例代码:略
053-double tgamma(double _X):返回伽玛函数在x处的值
说明和示例代码:略
054-double trunc(double _X):返回X的整数部分
说明和示例代码:略
055-double atof(const char *_String):将字符串转换为双精度浮点值
56-double ceil(double _X):将x向正无穷方向舍入到最接近的整数
说明和示例代码:略
57-double floor(double _X):向负无穷方向近似取整
说明和示例代码:略
58-double frexp(double _X, int * _Y):返回x的尾数和指数
详情见博文 https://blog.csdn.net/wenhao_ir/article/details/125607783中的第2-08点。与2-08点不同的是这里是把结果存储在整型数组Y中。
示例代码:略
59-double ldexp(double _X, int exp):返回x * (2^exp)的值
标题中不太好写公式,实际上这个函数做了下面这个事:
y
=
x
∗
2
e
x
p
y=x*2^{exp}
y=x∗2exp
示例代码:略
至此,将VS2013的C/C++标准库math中的函数过了一遍。
本来是想附一些示例代码的,但是因为自己遍历一遍Python中的math库了,详情见 https://blog.csdn.net/wenhao_ir/article/details/125607783,Python中的math库也是按C/C++的标准来写的,所以对每个函数的使用和作用一看就知道了,也就感觉没必要给示例代码了。