您的位置:首页 > 移动开发 > IOS开发

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该怎么做?。在开发文档上有这样一个表,是依照保留小数点后一位处理的。

相信大家一看就明确了:





方法二:

1、round(12345.6789) 结果为:12346

2、round(12345.6789*100)/100 结果为:12345.68

第二个是我要的结果,可是我不明确这么个简单的四舍五入要搞的这么复杂,应该有更好的吧。我记得在其它语言里用:round(12345.6789。2) 就能够实现四舍五入到两位小数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: