Objective-C浮点数转化整数(向上取整、向下取整)

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.csdn.net/abc649395594/article/details/44730425

https://www.jianshu.com/p/236825b712fe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值