对 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)
.
有短码
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)
.