数学库
编辑教程数学库
Arduino数学库(math.h)包含了许多用于操作浮点数的有用的数学函数。
库中的宏
以下是在标题math.h中定义的宏:
宏 | 值 | 描述 |
---|---|---|
M_E | 2.7182818284590452354 | 常数e。 |
M_LOG2E | 1.4426950408889634074 / log_2 e / |
e以2为底的对数。 |
M_1_PI | 0.31830988618379067154 / 1/pi / |
常数1/pi。 |
M_2_PI | 0.63661977236758134308 / 2/pi / |
常数2/pi。 |
M_2_SQRTPI | 1.12837916709551257390 / 2/sqrt(pi) / |
常数2/sqrt(pi)。 |
M_LN10 | 2.30258509299404568402 / log_e 10 / |
10的自然对数。 |
M_LN2 | 0.69314718055994530942 / log_e 2 / |
2的自然对数。 |
M_LOG10E | 0.43429448190325182765 / log_10 e / |
e以10为底的对数。 |
M_PI | 3.14159265358979323846 / pi / |
常数pi。 |
M_PI_2 | 3.3V1.57079632679489661923 / pi/2 / |
常数pi/2。 |
M_PI_4 | 0.78539816339744830962 / pi/4 / |
常数pi/4。 |
M_SQRT1_2 | 0.70710678118654752440 / 1/sqrt(2) / |
常数1/sqrt(2)。 |
M_SQRT2 | 1.41421356237309504880 / sqrt(2) / |
2的平方根。 |
acosf | - | acos()函数的别名。 |
asinf | - | asin()函数的别名。 |
atan2f | - | atan2()函数的别名。 |
cbrtf | - | cbrt()函数的别名。 |
ceilf | - | ceil()函数的别名。 |
copysignf | - | copysign()函数的别名。 |
coshf | - | cosh()函数的别名。 |
expf | - | exp()函数的别名。 |
fabsf | - | fabs()函数的别名。 |
fdimf | - | fdim()函数的别名。 |
floorf | - | floor()函数的别名。 |
fmaxf | - | fmax()函数的别名。 |
fminf | - | fmin()函数的别名。 |
fmodf | - | fmod()函数的别名。 |
frexpf | - | frexp()函数的别名。 |
hypotf | - | hypot()函数的别名。 |
INFINITY | - | 无穷大常量。 |
isfinitef | - | isfinite()函数的别名。 |
isinff | - | isinf()函数的别名。 |
isnanf | - | isnan()函数的别名。 |
ldexpf | - | ldexp()函数的别名。 |
log10f | - | log10()函数的别名。 |
logf | - | log()函数的别名。 |
lrintf | - | lrint()函数的别名。 |
lroundf | - | lround()函数的别名。 |
库函数
以下函数在标题 math.h 中定义:
库函数 | 描述 |
---|---|
double acos (double __x) | acos()函数计算x的反余弦的主值。返回值在[0, pi]弧度的范围内。不在[-1, +1]范围内的参数会发生域错误。 |
double asin (double __x) | asin()函数计算x的反正弦的主值。返回值在[-pi/2, pi/2]弧度的范围内。不在[-1, +1]范围内的参数会发生域错误。 |
double atan (double __x) | atan()函数计算x的反正切的主值。返回值在[-pi/2, pi/2]弧度的范围内。 |
double atan2 (double y, double x) | atan2()函数计算y/x的反正切的主值,使用两个参数的符号来确定返回值的象限。返回值在[-pi, +pi]弧度的范围内。 |
double cbrt (double __x) | cbrt()函数返回x的立方根值。 |
double ceil (double __x) | ceil()函数返回大于或等于x的最小整数值,以浮点数表示。 |
static double copysign (double x, double y) | copysign()函数返回x,但带有y的符号。即使x或y是NaN或零,他们也可以工作。 |
double cos(double __x) | cos()函数返回x的余弦,以弧度为单位。 |
double cosh (double __x) | cosh()函数返回x的双曲余弦。 |
double exp (double __x) | exp()返回e的x次幂的值。 |
double fabs (double __x) | fabs()函数计算浮点数x的绝对值。 |
double fdim (double x, double y) | fdim()函数返回max(x - y, 0)。如果x或y或者两者都是NaN,则返回NaN。 |
double floor (double __x) | floor()函数返回小于或等于x的最大整数值,以浮点数表示。 |
double fma (double x, double y, double __z) | fma()函数执行浮点乘加,即运算(x * y) + z,但是中间结果不会四舍五入到目标类型。这有时可以提高计算的精度。 |
double fmax (double x, double y) | fmax()函数返回两个值x和y中较大的一个。如果一个参数是NaN,则返回另一个参数。如果两个参数都是NaN,则返回NaN。 |
double fmin (double x, double y) | fmin()函数返回两个值x和y中较小的一个。如果一个参数是NaN,则返回另一个参数。如果两个参数都是NaN,则返回NaN。 |
double fmod (double x, doubley) | fmod()函数返回x / y的余数。 |
double frexp (double x, int * pexp) | frexp()函数将浮点数分解为规格化分数和2的整次幂。它将整数存储在pexp指向的int对象中。如果x是一个正常的浮点数,则frexp数返回值v,使得v具有区间[1/2, 1]零的量值,而x等于v乘以2的pexp。如果x是零,那么结果的两个部分都是零。如果x不是有限数字,frexp()将按原样返回x,并通过pexp存储0。 注意 − 这个实现允许一个零指针作为指令来跳过存储指数。 |
double hypot (double x, doubley) | hypot()函数返回sqrt(xx + yy)。这是一个边长为x和y的直角三角形的斜边的长度,或点(x, y)距离原点的距离。使用这个函数而不是直接使用公式是比较明智的,因为误差要小得多。x和y没有下溢。如果结果在范围内,则不会溢出。 |
static int isfinite (double __x) | 如果x是有限的,isfinite()函数返回一个非零值:不是正或负无穷,也不是NaN。 |
int isinf (double __x) | 如果参数x是正无穷大,则函数isinf()返回1;如果x是负无穷大,则返回-1,否则返回0。 注意 − GCC 4.3可以用内联代码替换这个函数,这个代码对两个无穷大返回1值(gcc bug #35509)。 |
int isnan (double __x) | 如果参数x表示“非数字”(NaN)对象,则函数isnan()返回1,否则返回0。 |
double ldexp (double x, int exp ) | ldexp()函数将浮点数乘以2的整数次幂。它返回x乘以2的exp次幂的值。 |
double log (double __x) | log()函数返回参数x的自然对数。 |
double log10(double __x) | log10()函数返回参数x的对数,以10为基数。 |
long lrint (double __x) | lrint()函数将x四舍五入到最近的整数,将中间情况舍入到偶数整数方向(例如,1.5和2.5的值都舍入到2)。这个函数类似于rint()函数,但是它的返回值类型不同,并且有可能溢出。 返回 四舍五入的长整数值。如果x不是有限数字或者溢出,则此实现返回LONG_MIN值(0x80000000)。 |
long lround (double __x) | lround()将函数将x四舍五入到最近的整数,但中间情况不舍入到0(不是到最近的偶数整数)。这个函数类似于round()函数,但是它的返回值的类型是不同的,并且有可能溢出。 返回 四舍五入的长整数值。如果x不是有限数字或者溢出,则此实现返回LONG_MIN值(0x80000000)。 |
double modf (double x, double * iptr ) | mod函数将参数x分解为整数部分和小数部分,每个部分都与参数具有相同的符号。它在iptr指向的对象中将整数部分存储为double。modf()返回x的有符号小数部分。 注意 − 这个实现跳过零指针的写入。但是,GCC 4.3可以用内联代码替换这个函数,不允许使用NULL地址来避免存储。 |
float modff (float x, float * iptr) | modf()函数的别名。 |
double pow (double x, double y) | pow()函数返回x的y次幂。 |
double round (double __x) | round()函数将x四舍五入到最近的整数,但中间情况不舍入到0(不是到最近的偶数整数)。不可能会溢出。 返回 四舍五入的值。如果x是整数或无穷大,则返回x本身。如果x是NaN,则返回NaN。 |
int signbit (double __x) | 如果x的值设置了符号位,signbit()函数将返回一个非零值。这与“x < 0.0”不同,因为IEEE 754浮点允许零署名。比较“-0.0 < 0.0”是错的,但“signbit (-0.0)”会返回一个非零值。 |
double sin (double __x) | sin()函数返回x的正弦值,以弧度为单位。 |
double sinh (double __x) | sinh()函数返回x的双曲正弦。 |
double sqrt (double __x) | sqrt()函数返回x的非负平方根。 |
double square (double __x) | square()函数返回x * x。 注意 − 此函数不属于C标准定义。 |
double tan (double __x) | tan()函数返回x的正切值,以弧度为单位。 |
double tanh ( double __x) | tanh()函数返回x的双曲正切。 |
double trunc (double __x) | trunc()函数将x四舍五入为最近的整数,不大于绝对值。 |
示例
下例显示如何使用最常用的math.h库函数:
double double__x = 45.45 ;
double double__y = 30.20 ;
void setup() {
Serial.begin(9600);
Serial.print("cos num = ");
Serial.println (cos (double__x) ); // returns cosine of x
Serial.print("absolute value of num = ");
Serial.println (fabs (double__x) ); // absolute value of a float
Serial.print("floating point modulo = ");
Serial.println (fmod (double__x, double__y)); // floating point modulo
Serial.print("sine of num = ");
Serial.println (sin (double__x) ) ;// returns sine of x
Serial.print("square root of num : ");
Serial.println ( sqrt (double__x) );// returns square root of x
Serial.print("tangent of num : ");
Serial.println ( tan (double__x) ); // returns tangent of x
Serial.print("exponential value of num : ");
Serial.println ( exp (double__x) ); // function returns the exponential value of x.
Serial.print("cos num : ");
Serial.println (atan (double__x) ); // arc tangent of x
Serial.print("tangent of num : ");
Serial.println (atan2 (double__y, double__x) );// arc tangent of y/x
Serial.print("arc tangent of num : ");
Serial.println (log (double__x) ) ; // natural logarithm of x
Serial.print("cos num : ");
Serial.println ( log10 (double__x)); // logarithm of x to base 10.
Serial.print("logarithm of num to base 10 : ");
Serial.println (pow (double__x, double__y) );// x to power of y
Serial.print("power of num : ");
Serial.println (square (double__x)); // square of x
}
void loop() {
}
结果
cos num = 0.10
absolute value of num = 45.45
floating point modulo =15.25
sine of num = 0.99
square root of num : 6.74
tangent of num : 9.67
exponential value of num : ovf
cos num : 1.55
tangent of num : 0.59
arc tangent of num : 3.82
cos num : 1.66
logarithm of num to base 10 : inf
power of num : 2065.70
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟