博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 保留到小数点后几位
阅读量:7245 次
发布时间:2019-06-29

本文共 2321 字,大约阅读时间需要 7 分钟。

hot3.png

这个是系统方法

- (NSString*)Rounding:(float)number afterPoint:(NSInteger)position{     NSDecimalNumberHandler *handler = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode: NSRoundPlain scale: position raiseOnExactness: NO raiseOnOverflow: NO raiseOnUnderflow:YES raiseOnDivideByZero: NO];     NSDecimalNumber *floatDecimal = [[NSDecimalNumber alloc] initWithFloat: number];     NSDecimalNumber *resultNumber = [floatDecimal decimalNumberByRoundingAccordingToBehavior:handler];     return [NSString stringWithFormat:@"%@",resultNumber];}

 

我用的是下面这个方法,注意⚠️只有在保留4位以下小数时四舍五入才正常

- (NSString*)Rounding:(double)number afterPoint:(NSInteger)position{    NSNumber *priceNum = [NSNumber numberWithDouble:number];    NSString *string = [NSString stringWithFormat:@"%.10f",number];    NSRange range = [string rangeOfString:@"."];    if (range.location!=NSNotFound) {                NSInteger loc = range.location+position+1;        NSRange rangeS;        if (string.length>loc) {            rangeS = NSMakeRange(loc, 1);            NSString *str = [string substringWithRange:rangeS];            if (str!=nil&&[str floatValue]>=5.0f) {                priceNum = [NSNumber numberWithDouble:[[string stringByReplacingCharactersInRange:rangeS withString:@"9"] floatValue]];            }        }            }    if (position>4) {        return @"";    }        if (position==1) {//保留1位        return [NSString stringWithFormat:@"%.1f",round([priceNum floatValue]*1000000000000)/1000000000000];    }else if(position==2){//保留2位        return [NSString stringWithFormat:@"%.2f",round([priceNum floatValue]*1000000000000)/1000000000000];    }else if(position==3){//保留3位        return [NSString stringWithFormat:@"%.3f",round([priceNum floatValue]*1000000000000)/1000000000000];    }else if(position==4){//保留4位        return [NSString stringWithFormat:@"%.4f",round([priceNum floatValue]*1000000000000)/1000000000000];    }        //默认保留2位    return [NSString stringWithFormat:@"%.2f",round([priceNum floatValue]*1000000000000)/1000000000000];}

使用方法:

//保留小数点后2位,因为第3位小数大于5,所以第2位进1[self Rounding:100.11545  afterPoint:2]//结果返回 100.12//保留小数点后4位,因为第5位小数大于5,所以第4位进1[self Rounding: 100.11545  afterPoint:4]//100.1155//保留小数点后3位,因为第4位小数小于5,所以舍去[self Rounding: 100.11545  afterPoint:3]//100.115

 

转载于:https://my.oschina.net/wenchengxu123/blog/1837421

你可能感兴趣的文章
koa,node,express通用方法连接mysql
查看>>
(转)关于敏捷团队领任务的几个误区
查看>>
js_深拷贝对象
查看>>
java bean 对象属性复制框架BeanMapping-01-入门案例
查看>>
前端实用知识
查看>>
猴子数据带您解析2019最新微信域名防封技术
查看>>
java:方法覆盖与方法重载
查看>>
nodejs代码细节效率对比
查看>>
聊聊flink的RestartStrategies
查看>>
MP3转换AAC格式哪个音频转换器好
查看>>
【PHP 每日函数】第 01 周期
查看>>
云服务和独立服务器 我们应该怎么选?
查看>>
DataLakeAnalytics: 解析IP地址对应的国家城市地址的能力
查看>>
如何在Spring Boot中使用Hibernate Natural ID
查看>>
通过 React Hooks 声明式地使用 setInterval
查看>>
HTML面试题整理总结
查看>>
Core dump调试小记(暂时未解决)
查看>>
力扣(LeetCode)31
查看>>
JS中创建对象的几种设计模式
查看>>
python爬虫的一些技巧
查看>>