ios客户端学习-四舍五入保留两位小数
来源:互联网 发布:手机自动关机软件 编辑:程序博客网 时间:2024/05/22 17:37
最近快被ios的四舍五入的问题给烦死了,不是说他的四舍五入不好用,而是这个四舍五入有时可能不是四舍五入,而是四舍六入。
先说一下我最后确定使用的方法:
-(float)roundFloat:(float)price{
return (floorf(price*100 +0.5))/100;
}
这个基本能够确保最后是四舍五入并且能保留两位小数。下面再说说这个曲折的过程,首先我想到的是用ios里面自带的roud方法,
-(float)roundFloat:(float)price{
return roundf(price);
}
但是如下举例
float test =23.625;
float test2 =23.6250;
float test3 =23.6251;
test = [selfroundFloat:test];
test2 = [selfroundFloat:test2];
test3 = [selfroundFloat:test3];
NSLog(@"test:%.2f",test);
NSLog(@"test2:%.2f",test2);
NSLog(@"test3:%.2f",test3);
得出结果:
test:24.00
test2:24.00
test3:24.00
很显然不是我想要的效果,然后改方法
-(float)roundFloat:(float)price{
return roundf(price*100)/100;
}
-(float)roundFloat:(float)price{
NSString *temp = [NSStringstringWithFormat:@"%.7f",price];
NSDecimalNumber *numResult = [NSDecimalNumberdecimalNumberWithString:temp];
NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler
decimalNumberHandlerWithRoundingMode:NSRoundBankers
scale:2
raiseOnExactness:NO
raiseOnOverflow:NO
raiseOnUnderflow:NO
raiseOnDivideByZero:YES];
return [[numResultdecimalNumberByRoundingAccordingToBehavior:roundUp]floatValue];
}
用这个方法格式化上面的浮点数结果如下:
test:23.62
test2:23.62
test3:23.63
可以看到test ,test2 没有做四舍五入,只有 test3 是四舍五入了,从数据上分析,不难发现,原因是test3里面的第三个小数位后面有一个1,而test及test2后面没有小数位或者为0,所以就没有进行四舍五入。
- ios客户端学习-四舍五入保留两位小数
- iOS 保留两位小数 不四舍五入
- iOS 四舍五入保留两位小数
- iOS 保留两位小数,避免四舍五入
- 四舍五入保留两位小数
- 四舍五入保留两位小数
- java 小数四舍五入 保留两位小数
- 将数字四舍五入保留两位小数
- java 四舍五入后保留两位小数
- 保留两位小数即四舍五入
- 新JS四舍五入保留两位小数
- JS保留两位小数 四舍五入函数
- JavaScript四舍五入保留两位小数
- 保留四舍五入后的两位小数
- JavaScript四舍五入保留两位小数
- JS保留两位小数 四舍五入函数
- JS保留两位小数 四舍五入函数
- java四舍五入保留两位小数
- 【LEETCODE】374- Guess Number Higher or Lower [Python]
- Android图片选择器、多选框架
- 杭电-1559 最大子矩阵
- 百度快速排名的七大谎言
- 使用ADB更改系统设置中的参数 如背光亮度、休眠时间等
- ios客户端学习-四舍五入保留两位小数
- TCP网络编程接口详细介绍
- 已知中序和前序(或后序)遍历结果生成树
- MongoDB 集群删除
- java中对按钮的事件监听
- 04.2#R基础(系统1)-R的数据结构
- maven settings.xml
- 启动eclipse时sdk报错:sdk\system-images\android-23\android-wear\armeabi-v7a\devices.xml
- 分配任务的时候,要给出需求而不是解决方案