有点担心NSDecimalNumber?

问题描述 投票:-1回答:1

有一个简短的代码

    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”


objective-c double nsdecimalnumber cgfloat
1个回答
2
投票

fin还可以,但NSLogdoubleValue。在早期版本的macOS中,NSLog确实调用description,返回“78.99”。解决方案:NSLog(@"%@", fin.description)

© www.soinside.com 2019 - 2024. All rights reserved.