IOS 四舍五入问题

 - (NSString*)notRounding:(CGFloat)price afterPoint:(NSInteger)position {

NSDecimalNumberHandler*roundingBehavior = [NSDecimalNumberHandlerdecimalNumberHandlerWithRoundingMode:NSRoundDownscale:positionraiseOnExactness:NOraiseOnOverflow:NOraiseOnUnderflow:NOraiseOnDivideByZero:NO];

NSDecimalNumber*ouncesDecimal;

NSDecimalNumber*roundedOunces;

ouncesDecimal = [[NSDecimalNumberalloc]initWithString:[NSStringstringWithFormat:@"%@",@(price)]];

roundedOunces = [ouncesDecimaldecimalNumberByRoundingAccordingToBehavior:roundingBehavior];

return[NSStringstringWithFormat:@"%@",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)就可以实现四舍五入到两位小数。

tips:一般我有一个习惯喜欢用%.2f转换数据 这种情况其实就是四舍五入的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容