iOS中常用函数
2019-06-26 本文已影响0人
coming_168
一些常用的函数用法:
1. rand() / random() / arc4random() :随机数
- rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。
- arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是rand()的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。
- 精确度比较:arc4random() > random() > rand()
1. rand():不常用
srand((unsigned)time(0)); //不加这句每次产生的随机数不变
NSLog(@"%d",rand());
2. random():不常用
srandom((unsigned)time(0)); //不加这句每次产生的随机数不变
NSLog(@"%ld",random());
3. 常用方法:arc4random()
NSLog(@"%u",arc4random());
3.1 获取一个随机整数范围在:[0,100)包括0,不包括100
int x = arc4random() % 100;
3.2 获取一个随机数范围在:[100,500],包括100,包括500
int y = (arc4random() % 401) + 100;
3.3 获取一个随机整数,范围在[start,end],包括start,包括end
- (int)getRandomNumber:(int)a to:(int)b {
// 代表从a开始连续(b - a + 1)个
return (arc4random() % (b - a + 1)) + a;
}
2. abs() / labs() :处理int类型的取绝对值
NSLog(@"%d",abs(-10)); // 10
NSLog(@"%ld",labs(-10)); // 10
3. fabs() / fabsf() / fabsl() :浮点数绝对值
// 处理double类型的取绝对值
double i = -9.99;
NSLog(@"%.2f",fabs(i)); // 9.99
// 处理float类型的取绝对值
float j = -10.12;
NSLog(@"%f",fabsf(j)); // 10.120000
float k = -10.12;
// 处理float类型的取绝对值
NSLog(@"%.2Lf",fabsl(k)); // 10.12
4. floor() / floorf() / floorl() :向下取整
NSLog(@"%.2f",floor(9.6)); // 9.00
NSLog(@"%.2f",floor(9.1)); // 9.00
NSLog(@"%.2f",floorf(9.6)); // 9.00
NSLog(@"%.2Lf",floorl(9.1)); // 9.00
5. ceil() / ceilf() / ceill() :向上取整
NSLog(@"%.2f",ceil(9.6)); // 10.00
NSLog(@"%.2f",ceil(9.1)); // 10.00
NSLog(@"%.2f",ceilf(9.6)); // 10.00
NSLog(@"%.2Lf",ceill(9.1)); // 10.00
6. round() / roundf() / roundl() :四舍五入
NSLog(@"%.2f",round(9.6)); // 10.00
NSLog(@"%.2f",round(9.1)); // 9.00
7. sqrt() / sqrtf() / sqrtl() :返回平方根
NSLog(@"%.2f",sqrt(25)); // 5.00
NSLog(@"%.2f",sqrtf(64)); // 8.00
8. pow() / powf() / powl() :返回幂次方
// 返回2的10次方(2^10)
NSLog(@"%.2f",pow(2.0, 10)); // 1024.00
9. fmax() / fmaxf() / fmaxl() :返回最大值(两个数值比较)
NSLog(@"%.2f",fmax(15,6)); // 15.00
10. fmin() / fminf() / fminl() :返回最小值(两个数值比较)
NSLog(@"%.2f",fmin(15,6)); // 6.00
11. hypot() / hypotf() / hypotl() :返回直角三角形斜边的长度
// 已知两个直角边的长度,求斜边长度
NSLog(@"%.2f", hypot(3,4)); // 5.00
12. fmod() / fmodf() / fmodl() :返回两参数相除的余数
NSLog(@"%.2f", fmod(5,6)); // 5.00
NSLog(@"%.2f", fmod(6,2)); // 0.00
NSLog(@"%.2f", fmod(5,10)); // 5.00
13. modf() / modff() / modfl() :浮点数分解为整数和小数
double x, a, b;
x = 8.123456;
a = modf(x, &b); // 返回值 a 为小数部分(小数点后的部分),并设置 b 为整数部分
NSLog(@"整数部分->%f", b); // 整数部分->8.000000
NSLog(@"小数部分->%f", a); // 小数部分->0.123456
14. frexp() / frexpf() / frexpl() :浮点数分解成2为底的指数和商值
// 定义浮点数x,fraction为商值,n为次方
double x = 1020, fraction;
int n;
// 通过函数frexp()可以获取如下数据
fraction = frexp(x, &n);
// 打印结果:
NSLog(@"x = %f,fraction = %f, n = %d", x, fraction, n); // x = 1020.000000,fraction = 0.996094, n = 10
// 商值:fraction = x / 2^n,fraction的范围是在[0, 1)区间
15. sin() / sinf() / sinl() :求正弦值
// 求30度角的正弦值
NSLog(@"%f",sin(M_PI / 180 * 30)); // 0.500000
// 求90度角的正弦值
NSLog(@"%f",sin(M_PI / 180 * 90)); // 1.000000
16. cos() / cosf() / cosl() :求余弦值
// 求60度的余弦值
NSLog(@"%.2f", cos(M_PI / 180 * 60)); // 0.50
// 求90度的余弦值
NSLog(@"%.2f", cos(M_PI / 180 * 90)); // 0.00
17. tan() / tanf() / tanl() :求正切值
// 求45度的正切值
NSLog(@"%f", tan(M_PI / 180 * 45)); // 1.000000
// 求60度的正切值
NSLog(@"%f", tan(M_PI / 180 * 60)); // 1.732051