float 四舍五入
- 项目需要一个四舍五入的小功能
- 简单的说一下,经常用到的方法和问题
先定义一个浮点数类型num
float num = 5.672;
#####方法一
也是最直接的方法
强制转换为int类型 (int)num
或者[num intValue]
,这种方法的问题在于, 它直接去掉了小数点后面的数字 打印结果为 5
,不会帮你四舍五入。
#####方法二
网上常用的方法之一, 先定义一个方法。
//number:需要处理的数字, position:保留小数点第几位,四舍五入
+(NSString *)roundUp:(float)number afterPoint:(int)position;
在.m文件中实现方法
1 | +(NSString *)roundUp:(float)number afterPoint:(int)position{ |
调用方法1
2
3 NSString *sv = [self notRounding:num afterPoint:2];
NSLog(@"sv = %@",sv);
输出结果为:sv = 5.67
这种方法同样一夜游一个问题, 在将==position==设置位0的时候, 他也不会四舍五入, 只会向上晋级 打印结果为 6
#####方法三(推荐)
也是最简单的方法,系统自带的round函数,直接调用它(int)roundf(float或者double类型的数据)
(int)roundf(num)
输出结果为 5.67
,将num改为5.678 输出结果则是5.68
严格的说四舍五入的话还是应该用round,不过上面两种方法,在其他特殊的时候也可以尝试使用,比如只需要前边整数,或者需要晋级的数。