【问题标题】:NSDecimalNumber Rounding not working in iOS 11NSDecimalNumber 四舍五入在 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

【问题讨论】:

    标签: rounding nsdecimalnumber


    【解决方案1】:

    更新 - 问题已解决

    这不是舍入错误,而是 NSDecimalNumber 的描述方法的问题。当我使用调试器查看值时,它是正确的。

    要查看正确的结果,请使用:

    NSLog(@"rounding result = %@", result.stringValue);
    

    【讨论】:

    • 谢谢!!!这救了我的命,我不知道我花了多少时间试图让它工作,这是错误的日志语句:) 太棒了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多