NSDecimalNumber 四舍五入在 iOS 11 中不起作用
Posted
技术标签:
【中文标题】NSDecimalNumber 四舍五入在 iOS 11 中不起作用【英文标题】:NSDecimalNumber Rounding not working in iOS 11 【发布时间】:2018-03-13 23:26:41 【问题描述】:我有一个应用程序从 ios 9 开始就在商店中。最近它刚刚因为舍入错误而崩溃。我正在使用 Xcode 版本 9.2 (9C40b)。我在 iOS 9 中编写了一段显示舍入工作的文本代码,但在 iOS 11 中没有。结果应四舍五入到小数点后 2 位。
NSDecimalNumberHandler* round = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
NSDecimalNumber* myNumber = [NSDecimalNumber decimalNumberWithString:@"67.95999999999997"];
NSDecimalNumber* result = [myNumber decimalNumberByRoundingAccordingToBehavior:round];
NSLog(@"myNumber = %@", myNumber);
NSLog(@"rounding result = %@", result);
在 iOS 11 上:
我的号码 = 67.95999999999997 舍入结果 = 67.96000000000001
**在 iOS9 上 ** 我的号码 = 67.95999999999997 舍入结果 = 67.96
【问题讨论】:
【参考方案1】:更新 - 问题已解决
这不是舍入错误,而是 NSDecimalNumber 的描述方法的问题。当我使用调试器查看值时,它是正确的。
要查看正确的结果,请使用:
NSLog(@"rounding result = %@", result.stringValue);
【讨论】:
谢谢!!!这救了我的命,我不知道我花了多少时间试图让它工作,这是错误的日志语句:) 太棒了以上是关于NSDecimalNumber 四舍五入在 iOS 11 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
2016-5-25NSDecimalNumber 知识点的简单整理