Objective-C拓展了C,自然很多用法是和C一致的。比如浮点数转化成整数,就有以下四种情况。
1.简单粗暴,直接转化
float f = 1.5;
int a;
a = (int)f;
NSLog("a = %d",a);
输出结果是1。(int)是强制类型转化,丢弃浮点数的小数部分。
2.高斯函数,向下取整
float f = 1.5;
int a;
a = ceil(f);
NSLog("a = %d",a);
输出结果是1。floor()方法是向下取整,类似于数学中的高斯函数 [].取得不大于浮点数的最大整数,对于正数来说是舍弃浮点数部分,对于复数来说,舍弃浮点数部分后再减1.
3.ceil函数,向上取整。
float f = 1.5;
int a;
a = ceil(f);
NSLog("a = %d",a);
输出结果是2。ceil()方法是向上取整,取得不小于浮点数的最小整数,对于正数来说是舍弃浮点数部分并加1,对于复数来说就是舍弃浮点数部分.
4.通过强制类型转换四舍五入。
float f = 1.5;
int a;
a = (int)(f+0.5);
NSLog("a = %d",a);
其中原理非常简单,所以就不做详细说明了。
5.isnan
如果一个数是一个确定的数,那它就不是nan值
如果一个数是无穷大,无穷小,那它就是nan值
if (isnan(1)) {
DLog(@"1是NAN");
} else {
DLog(@"1不是NAN");
}
6.abs
int abs(int i); // 处理int类型的取绝对值
7.fabs
double fabs(double i); //处理double类型的取绝对值
8.fabsf
float fabsf(float i); /处理float类型的取绝对值
9.ceilf 进位方法
float numberToRound;
int result;
numberToRound = 5.61;
result = (int)ceilf(numberToRound);
NSLog(@"ceilf(%.2f) = %d", numberToRound, result);
//输出 ceilf(5.61) = 6
numberToRound = 5.41;
result = (int)ceilf(numberToRound);
NSLog(@"ceilf(%.2f) = %d", numberToRound, result);
//输出 ceilf(5.41) = 6
10.roundf 四舍五入
float numberToRound;
int result;
numberToRound = 5.61;
result = (int)roundf(numberToRound);
NSLog(@"roundf(%.2f) = %d", numberToRound, result);
//输出 roundf(5.61) = 6
numberToRound = 5.41;
result = (int)roundf(numberToRound);
NSLog(@"roundf(%.2f) = %d", numberToRound, result);
//输出 roundf(5.41) = 5
11.roundf 模位方法
float numberToRound;
int result;
numberToRound = 5.61;
result = (int)floorf(numberToRound);
NSLog(@"floorf(%.2f) = %d", numberToRound, result);
//输出 floorf(5.61) = 5
numberToRound = 5.41;
result = (int)floorf(numberToRound);
NSLog(@"floorf(%.2f) = %d", numberToRound, result);
//输出 floorf(5.41) = 5
https://blog.youkuaiyun.com/abc649395594/article/details/44730425