对NSDecimalNumber有点困惑?

时间:2018-11-14 11:55:00

标签: objective-c double nsdecimalnumber cgfloat

有一个简短的代码

    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”


1 个答案:

答案 0 :(得分:2)

fin可以,但是NSLog呼叫doubleValue。在早期版本的macOS中,NSLog确实调用了description并返回了“ 78.99”。解: NSLog(@"%@", fin.description)