IOS开发之----四舍五入问题
2016-01-10 11:58
337 查看
方法一:
-(NSString *)notRounding:(float)price afterPoint:(int)position{
NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
NSDecimalNumber *ouncesDecimal;
NSDecimalNumber *roundedOunces;
ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];
roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
[ouncesDecimal release];
return [NSString stringWithFormat:@"%@",roundedOunces];
}
介绍一下參数:
price:须要处理的数字。
position:保留小数点第几位,
然后调用
float s =0.126;
NSString *sv = [self notRounding:s afterPoint:2];
NSLog(@"sv = %@",sv);
输出结果为:sv = 0.12
接下来介绍NSDecimalNumberHandler初始化时的关键參数:decimalNumberHandlerWithRoundingMode:NSRoundDown,
NSRoundDown代表的就是 仅仅舍不入。
scale的參数position代表保留小数点后几位。
假设仅仅入不舍怎么办,比方,float 0.162 想要得到0.17该怎么做?。在开发文档上有这样一个表,是依照保留小数点后一位处理的。
相信大家一看就明确了:
![](http://s10.sinaimg.cn/mw690/71715bf8g005fa5d83f29&690)
方法二:
1、round(12345.6789) 结果为:12346
2、round(12345.6789*100)/100 结果为:12345.68
第二个是我要的结果,可是我不明确这么个简单的四舍五入要搞的这么复杂,应该有更好的吧。我记得在其它语言里用:round(12345.6789。2) 就能够实现四舍五入到两位小数。
-(NSString *)notRounding:(float)price afterPoint:(int)position{
NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
NSDecimalNumber *ouncesDecimal;
NSDecimalNumber *roundedOunces;
ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];
roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
[ouncesDecimal release];
return [NSString stringWithFormat:@"%@",roundedOunces];
}
介绍一下參数:
price:须要处理的数字。
position:保留小数点第几位,
然后调用
float s =0.126;
NSString *sv = [self notRounding:s afterPoint:2];
NSLog(@"sv = %@",sv);
输出结果为:sv = 0.12
接下来介绍NSDecimalNumberHandler初始化时的关键參数:decimalNumberHandlerWithRoundingMode:NSRoundDown,
NSRoundDown代表的就是 仅仅舍不入。
scale的參数position代表保留小数点后几位。
假设仅仅入不舍怎么办,比方,float 0.162 想要得到0.17该怎么做?。在开发文档上有这样一个表,是依照保留小数点后一位处理的。
相信大家一看就明确了:
方法二:
1、round(12345.6789) 结果为:12346
2、round(12345.6789*100)/100 结果为:12345.68
第二个是我要的结果,可是我不明确这么个简单的四舍五入要搞的这么复杂,应该有更好的吧。我记得在其它语言里用:round(12345.6789。2) 就能够实现四舍五入到两位小数。
相关文章推荐
- 如何简单地在特定的某些控制器中隐藏导航栏
- iOS - 判断设备类型/第一响应者
- iOS NSUserDefaults数据持久化存储
- iOS开发实践之多线程(NSThread)
- IOS实现简单的进度条功能
- IOS学习笔记之协议与委托
- IOS 移除storyboard
- iOS --- OpenGLES之顶点缓存对象VBO
- ios 控件
- IOS实现验证码倒计时功能(一)
- IOS 移除storyboard
- iOS开发之NSLayoutConstraint
- IOS NSDate NSDateFormatter 导致相差8小时
- IOS NSDate NSDateFormatter 导致相差8小时
- iOS 关于颜色的库 - Wonderful
- Parse Notification for IOS
- Xcode上传ipa时itunes提示you are not authorized to use this service
- iOS开发CoreAnimation解读之三——几种常用Layer的使用解析
- iOS开发CoreAnimation解读之二——对CALayer的分析
- iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程