ios 中的基本算数函数
介紹一下Objective-c常用的函數(shù),常數(shù)變量
????? 1、?三角函數(shù)?
double sin (double);正弦?? sinA=∠A的對(duì)邊/斜邊。是股與弦的比例。double cos (double);余弦?
double tan (double);正切?
2 、反三角函數(shù)?
double asin (double); 結(jié)果介于[-PI/2, PI/2]?
double acos (double); 結(jié)果介于[0, PI]?
double atan (double); 反正切(主值), 結(jié)果介于[-PI/2, PI/2]?
double atan2 (double, double); 反正切(整圓值), 結(jié)果介于[-PI, PI]?
3 、雙曲三角函數(shù)?
double sinh (double);?
double cosh (double);?
double tanh (double);?
4 、指數(shù)與對(duì)數(shù)?
double exp (double);求取自然數(shù)e的冪?
double sqrt (double);開(kāi)平方?
double log (double); 以e為底的對(duì)數(shù)?
double log10 (double);以10為底的對(duì)數(shù)?
double pow(double x, double y);計(jì)算以x為底數(shù)的y次冪?
float powf(float x, float y); 功能與pow一致,只是輸入與輸出皆為浮點(diǎn)數(shù)?
5 、取整?
double ceil (double); 取上整?
double floor (double); 取下整?
6 、絕對(duì)值?
double fabs (double);求絕對(duì)值?
double cabs(struct complex znum) ;求復(fù)數(shù)的絕對(duì)值?
7 、標(biāo)準(zhǔn)化浮點(diǎn)數(shù)?
double frexp (double f, int *p); 標(biāo)準(zhǔn)化浮點(diǎn)數(shù), f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] )?
double ldexp (double x, int p); 與frexp相反, 已知x, p求f?
8 、取整與取余?
double modf (double, double*); 將參數(shù)的整數(shù)部分通過(guò)指針回傳, 返回小數(shù)部分?
double fmod (double, double); 返回兩參數(shù)相除的余數(shù)?
9 、其他?
double hypot(double x, double y);已知直角三角形兩個(gè)直角邊長(zhǎng)度,求斜邊長(zhǎng)度?
double ldexp(double x, int exponent);計(jì)算x*(2的exponent次冪)?
double poly(double x, int degree, double coeffs [] );計(jì)算多項(xiàng)式?
nt matherr(struct exception *e);數(shù)學(xué)錯(cuò)誤計(jì)算處理程序
iOS_數(shù)學(xué)函數(shù)Math Functions
floor/ceil/round? 向下取整/向上取整/四舍五入
取整實(shí)例1:
???? double d1 =10.12, d2 =10.88;
? ? float f1 =10.19893, f2 =10.77;
? ? DLog(@"floor_d = %f, floor_f = %f, ceil_d = %f, ceil_f = %f, round_d = %f, round_f = %f", floor(d1), floorf(f1), ceil(d1), ceilf(f1), round(d1), roundf(f1));
? ? //輸出? floor_d = 10.000000, floor_f = 10.000000, ceil_d = 11.000000, ceil_f = 11.000000, round_d = 10.000000, round_f = 10.000000
? ? DLog(@"floor_d2 = %f, floor_f2 = %f, ceil_d2 = %f, ceil_f2 = %f, round_d2 = %f, round_f2 = %f", floor(d2), floorf(f2), ceil(d2), ceilf(f2), round(d2), roundf(f2));
? ? //輸出? floor_d2 = 10.000000, floor_f2 = 10.000000, ceil_d2 = 11.000000, ceil_f2 = 11.000000, round_d2 = 11.000000, round_f2 = 11.000000
//取整與取余
float f1 =0.0;
? ? DLog(@"8.99的小數(shù)部分:modff(2.0, &f1) = %.2f,?整數(shù)部分:f1 = %.2f",modff(8.99, &f1), f1); ?
? ? //輸出? 8.99的小數(shù)部分:modff(2.0, &f1) = 0.99,? 整數(shù)部分:f1 = 8.00
DLog(@"fmodf(9.0, 2.0) = %f,? fmodf(10.0, 2.0) = %f", fmodf(9.0,2.0), fmodf(10.0,2.0));?取余
? ? //輸出? fmodf(9.0, 2.0) = 1.000000,? fmodf(10.0, 2.0) = 0.000000 ?
三角函數(shù):?
? ? float f1 =10.19893;
DLog(@"acosf = %f, asinf = %f, atanf = %f", acosf(f1), asinf(f1), atanf(f1));
? ? //輸出? acosf = nan, asinf = nan, atanf = 1.473059
? ? DLog(@"cosf = %f, sinf = %f, tanf = %f", cosf(f1), sinf(f1), tanf(f1));
? ? //輸出? cosf = -0.715014, sinf = -0.699110, tanf = 0.977757
? ? DLog(@"acoshf = %f, asinhf = %f, atanhf = %f", acoshf(f1), asinhf(f1), atanhf(f1));
? ? //輸出? acoshf = 3.013018, asinhf = 3.017825, atanhf = nan
對(duì)數(shù)與指數(shù)
float f1 =100.0, f2 =4.0;
? ? DLog(@"對(duì)數(shù): logf(100) = %f, log10f(100) = %f, log2f(4) = %f", logf(f1), log10f(f1), log2f(f2));
? ? //輸出?對(duì)數(shù): logf(100) = 4.605170, log10f(100) = 2.000000, log2f(4) = 2.000000
DLog(@"指數(shù): pow(2, 3) = %f", pow(2, 3));
? ? //輸出?指數(shù): pow(2, 3) = 8.000000
? ? DLog(@"開(kāi)平方:sqrt(100) = %f", sqrt(f1));
? ? //輸出?開(kāi)平方:sqrt(100) = 10.000000
float x =16.4, y;
? ? int n;
? ? y = frexpf(x, &n);
? ? DLog(@"y = frexpf(%f, &n) = %f,? ? n = %d", x, y, n);
? ? //輸出? y = frexpf(16.400000, &n) = 0.512500,? ? n = 5
? ? //即 16.4 = 0.5125 * 2^5
DLog(@"5 * 2^3 = ldexpf(5, 3) = %f",ldexpf(5,3));
? ? // 5 * 2^3 = ldexpf(5, 3) = 40.000000
/******************************************************************************
?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Math Functions? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
?******************************************************************************/
?? ?
————————————————————————————————
反三角函數(shù)
extern float acosf(float);?
extern double acos(double);
extern longdouble acosl(longdouble); ? 結(jié)果介于[0,PI]
?? ?
extern float asinf(float); ?結(jié)果介于[-PI/2, PI/2]
extern float atanf(float); ? ? 反正切(主值),結(jié)果介于[-PI/2, PI/2]
extern float atan2f(float,float);? ?反正切(整圓值),結(jié)果介于[-PI, PI]
?? ?
三角函數(shù)
extern float cosf(float);余弦
extern float sinf(float);正弦
extern float tanf(float);正切
雙曲三角函數(shù)
extern float acoshf(float);雙曲反余弦(Hyperbolic arc cosine)函數(shù)
extern float asinhf(float);雙曲反正弦(Hyperbolic arc sine)函數(shù)
extern float atanhf(float);雙曲反正切(Hyperbolic arc tangent)函數(shù)
extern float coshf(float);?雙曲余弦(Hyperbolic cosine)函數(shù)
extern float sinhf(float);?雙曲正弦(Hyperbolic sine)函數(shù)
extern float tanhf(float);?雙曲正切(Hyperbolic tangent)函數(shù)
————————————————————————————————
指數(shù)與對(duì)數(shù)
extern float expf(float);?求取自然數(shù)e的冪
extern float exp2f(float);?計(jì)算以2為底的指數(shù)
extern float expm1f(float);以2為底的指數(shù)結(jié)果再減1
?
extern float logf(float);以e為底的對(duì)數(shù)
extern float log10f(float);以10為底的對(duì)數(shù)
extern float log2f(float);以2為底的對(duì)數(shù)
extern float log1pf(float); ?計(jì)算1與給定值x 的和(1+x)的自然對(duì)數(shù)(ln(1+x))
extern float logbf(float);返回以FLT_RADIX 為底,|x|?的對(duì)數(shù)值,返回值為浮點(diǎn)數(shù)
extern float modff(float,float *);?取整與取余 ,? 例,float f1 =0.0;?float f2 = modff(8.99, &f1);?結(jié)果:f1 = 8 ? f2 = 0.99
extern float ldexpf(float,int);?計(jì)算 參數(shù)1乘以2的 參數(shù)2次冪? ? // 5 * 2^3 = ldexpf(5, 3) = 40.000000? ?
externfloat frexpf(float,int *);把一個(gè)浮點(diǎn)數(shù)分解為尾數(shù)和2為底的指數(shù), ? 例 16.4 = 0.5125*2^5
extern int ilogbf(float);返回以?FLT_RADIX為底,|x|的對(duì)數(shù)值,返回值為整數(shù)
extern float scalbnf(float,int);x *?FLT_RADIXy
extern float scalblnf(float,longint);?參數(shù)1乘以FLT_RADIX的整數(shù)冪?x *?FLT_RADIXy ? ?
extern float fabsf(float);?絕對(duì)值 ?
extern float cbrtf(float);計(jì)算參數(shù)的立方根?3√x
extern float hypotf(float,float);?計(jì)算兩個(gè)數(shù)平方的和的平方根(√x2+y2)(求直角三角形的斜邊長(zhǎng)度)
extern float powf(float,float);計(jì)算以m為底數(shù)的n次冪,? powf(m, n)
extern float sqrtf(float);?開(kāi)平方
extern float erff(float);返回x的高斯誤差函數(shù)
extern float erfcf(float);?返回x的補(bǔ)余高斯誤差函數(shù)
/* lgammaf, lgamma, and lgammal are not thread-safe. The thread-safe
? ? variants lgammaf_r, lgamma_r, and lgammal_r are made available if
? ? you define the _REENTRANT symbol before including <math.h>? ? ? ? ? ? ? ? */
extern float lgammaf(float);γ?函數(shù)的自然對(duì)數(shù)
extern float tgammaf(float);γ?函數(shù)(伽瑪函數(shù))
————————————————————————————————
浮點(diǎn)數(shù)的最近整數(shù)操作
extern float ceilf(float);?向上取整
extern float floorf(float);?向下取整
externfloat nearbyintf(float);通過(guò)使用當(dāng)前舍入方向,舍入?yún)?shù)為浮點(diǎn)格式的一個(gè)整數(shù)值,整數(shù)。返回舍入的整數(shù)值。
extern float rintf(float);四舍五入
extern longint lrintf(float);四舍五入
extern float roundf(float);四舍五入
extern longint lroundf(float);四舍五入
?? ?
/*? long long is not part of C90. Make sure you are passing -std=c99 or
? ? -std=gnu99 or higher if you need these functions returning long longs ? ? */
#if !(__DARWIN_NO_LONG_LONG)
extern longlongint llrintf(float);
extern longlongint llroundf(float);
#endif /* !(__DARWIN_NO_LONG_LONG) */
extern float truncf(float);幅度(到0的距離,即絕對(duì)值)不大于給定值的最近整數(shù)
extern float fmodf(float,float);?獲得浮點(diǎn)數(shù)除法操作的余數(shù)
extern float remainderf(float,float);獲得浮點(diǎn)數(shù)除法操作的帶符號(hào)余數(shù)
extern float remquof(float,float,int *); 獲得浮點(diǎn)數(shù)除法操作的帶符號(hào)余數(shù),且返回符號(hào)及操作結(jié)果的最后三位組成的整數(shù)
externfloat copysignf(float,float);用參數(shù)1的大小和參數(shù)2的符號(hào)來(lái)返回值?//輸出 ? copysignf(2.5, -1.0) = -2.500000,? copysignf(4.0, 3) = 4.000000
extern float nanf(constchar *); 將執(zhí)行時(shí)定義的字符串作為靜態(tài)化非數(shù)型(Quiet NaN)操作所需的值?
extern float nextafterf(float,float);返回x之后y方向上的下一個(gè)可描述(Representable)值
extern double nexttoward(double,longdouble);返回x 之后y 方向上的下一個(gè)可描述值
externfloat fdimf(float,float);計(jì)算兩參數(shù)之間正整數(shù)差異//輸出 ? fdimf(2.5, 3.7) = 0.000000,? fdimf(5.4, 2.2) = 3.200000
extern float fmaxf(float,float);?求最大值
extern float fminf(float,float);?求最小值
extern float fmaf(float,float,float);乘累加(Multiply-add)
#define isgreater(x, y) __builtin_isgreater((x),(y))
#define isgreaterequal(x, y) __builtin_isgreaterequal((x),(y))
#define isless(x, y) __builtin_isless((x),(y))
#define islessequal(x, y) __builtin_islessequal((x),(y))
#define islessgreater(x, y) __builtin_islessgreater((x),(y))
#define isunordered(x, y) __builtin_isunordered((x),(y))
/* Legacy BSD API: please use C99 INFINITY macro instead. ? ? ? ? ? ? ? ? ? ? */
extern float __inff(void)__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
extern double __inf(void)__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
extern longdouble __infl(void)__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
/* Implementation detail; please use the standard C NAN macro instead.? ? ? ? */
extern float __nan(void)__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA);
算術(shù)函數(shù)
| int rand() | 隨機(jī)數(shù)生成。 (例) srand(time(nil)); //隨機(jī)數(shù)初期化 int val = rand()P; //0~49之間的隨機(jī)數(shù) |
| int abs(int a) | 整數(shù)的絕對(duì)值 (例)int val = abs(-8); →8 ※浮點(diǎn)數(shù)的時(shí)候用fabs。 |
| double fabs(double a) | 浮點(diǎn)數(shù)的絕對(duì)值 (例)double val = fabs(-12.345); →12.345 ※整數(shù)的時(shí)候用abs。 |
| double floor(double a) | 返回浮點(diǎn)數(shù)整數(shù)部分(舍棄小數(shù)點(diǎn)) (例)double val = floor(12.345); →12.000 |
| double ceil(double a); | 返回浮點(diǎn)數(shù)整數(shù)部分(舍棄小數(shù)點(diǎn)部分,往個(gè)位數(shù)進(jìn)1) (例)double val = ceil(12.345); →13.000 |
| double pow(double a, double b) | a的b次方 (例)double val = pow(2, 3); →8 |
| double sqrt(double a) | a的平方根 (例)double val = sqrt(2); →1.41421356 |
三角函數(shù)
| double cos(double a) | 余弦函數(shù) (a:弧度) |
| double sin(double a) | 正弦函數(shù) (a:弧度) |
| double tan(double a) | 正切函數(shù) (a:弧度) |
| double asin(double a) | 反正弦值 (a:弧度) |
| double acos(double a) | 反余弦函數(shù)(a:弧度) |
| double atan(double a) | 反正切函數(shù) |
| double atan2(double a, double b) | 返回給定的 a 及 b 坐標(biāo)值的反正切值 |
指數(shù)函數(shù)
| double log(double a) | 以e 為底的對(duì)數(shù)值 |
| double log10(double a) | 對(duì)數(shù)函數(shù)log |
常數(shù)
| M_PI | 圓周率(=π) |
| M_PI_2 | 圓周率的1/2(=π/2) |
| M_PI_4 | 圓周率的1/4(=π/4) |
| M_1_PI | =1/π |
| M_2_PI | =2/π |
| M_E | =e |
| M_LOG2E | log_2(e) |
| M_LOG10E | log_10(e)
|
總結(jié)
以上是生活随笔為你收集整理的ios 中的基本算数函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 启动模式 和 任务栈
- 下一篇: 手机中的AR是怎么实现的