对 NSDecimalNumber 有点困惑?

A little confused about NSDecimalNumber?

有短码

    NSString *numString = @"2128.123123";
    NSDecimalNumber *large = [NSDecimalNumber decimalNumberWithString:numString];
    NSDecimalNumberHandler *decimalHandler = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
    NSDecimalNumber *fin = [large decimalNumberByRoundingAccordingToBehavior:decimalHandler];
    NSLog(@"%@",fin);

看起来没问题,打印“2128.12”。

.....

但你可以试试 numString = @"78.991";

NSLog(@"%@",fin)

打印“78.98999999999999”......

为什么比例无效?期待“78.99”


fin 正常,但 NSLog 调用 doubleValue。在早期版本的 macOS 中,NSLog 确实调用了 description 而 returns 为“78.99”。解决方案: NSLog(@"%@", fin.description).