iOS开发-常用的数学方法

1、三角函数

double sin(double); 正弦

double cos(double); 余弦

double tan(double); 正切

 2、反三角函数

double asin(double); 反正弦,结果介于[-PI/2, PI/2]

double acos(double);  反余弦,结果介于[0, PI]

double atan(double); 反正切(主值), 结果介于[-PI/2, PI/2]

double atan2(double, double); 反正切(整圆值), 结果介于[-PI, PI]

3、双曲三角函数

double sinh (double); 双曲正弦

double cosh (double); 双曲余弦

double tanh (double);  双曲正切

4、反双曲三角函数

double asinh(double); 反双曲正弦

double acosh(double); 反双曲余弦

double atanh(double); 反双曲正切

5、指数、对数、开根

double sqrt(double n); 求 n的平方根

double cbrt(double n); 求 n的立方根

double hypot(double, double); 已知直角三角形两个直角边长度,求斜边长度,即两数平方之和开根

double result = hypot(3, 4) = 5.000000;

double pow(double x, double n);  求 x的n次方

double exp(double n);  求 e=2.71828的n次方

 double result = exp(8) = 2980.957987;

double exp2(double n);  求 2的n次方 

 double result = exp2(8) = 256.000000;

double expm1(double n); 求 e=2.71828的n次方 - 1

double result = expm1(8) = 2979.957987;

double log(double n); 求 以e为底的n的对数

double result = log(exp(8) = 8.000000;

double log10(double n); 求 以10为底的n的对数

double result = log10(100) = 2.000000;

double log2(double n); 求 以2为底的n的对数

double result = log2(8) = 3.000000;

6、取整和取余

double fabs(double n); n的绝对值

double copysign(double a, double b);  使a的符号和b一样

extern double ceil(double); 向上取整

double result = ceil(4.1) = 5.0;

extern double floor(double); 向下取整

double result = floor(4.9) = 4.0;

double rint(double n);  / double nearbyint(double n); 最接近n的整数,一样近优先偶数。

double result = nearbyint(1.5) = 2;
double result = nearbyint(2.5) = 2;
double result = nearbyint(1.411) = 1;

double round(double); 四舍五入

double trunc(double); 去除小数部分

double fmod(double x, double y); x/y取余

double remainder(double, double); x/y取余,余数可以为负数,取绝对值最小的余数

double result = remainder(0.6, 0.13) = -0.05
0.6 / 0.13 = 4 ...  0.08
0.6 / 0.13 = 5 ... -0.05 (这个绝对值最小)

double remquo(double, double, int *); 策略与remainder()一致, 商通过指针回传

int quotient = 0;
double result = remquo(0.6, 0.13, &quotient) = -0.05;
quotient = 5;

double modf(double x, double *y); 将参数x的整数部分通过指针传给y,返回值为小数部分

double integer = 0;
double decimal = modf(3.1415926, &integer);
integer = 3.000000;
decimal = 0.141593;

7、比较

double fdim(double a, double b);  x = a - b <= 0 ? 0 : a - b

double fmax(double, double); 取最大值

double fmin(double, double); 取最小值

double fma(double a, double b, double c); x = a * b + c

8、标准化浮点数

double frexp (double f, int *p); 标准化浮点数,f = x * 2^p,已知 f 求 x,p ( x介于[0.5, 1] )

double x = frexp(8, &p) = 0.05;
p = 4;

double ldexp (double x, int p); 与 frexp 相反, 已知 x,p 求 f

猜你喜欢

转载自blog.csdn.net/qq_36557133/article/details/103575550