如何将NSDecimalNumber转换为NSNumber

Ado*_*els 2 objective-c nsdecimalnumber

如何将NSDecimalNumber转换为NSNumber?我在一个方法中创建了一个NSDecimalNumber,它必须返回一个NSNumber对象,以后可以用[... isKindOfClass:[NSNumber class]]检查

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    id rn = [self haveToBeNSNumber];

    if ([rn isKindOfClass:[NSNumber class]]) {

        NSLog(@"It's NSNumber class object");
    }

    return YES;
}

- (NSNumber *)haveToBeNSNumber {

    NSDecimalNumber *dNumber = [NSDecimalNumber decimalNumberWithString:@"123.22"];

    return dNumber;

}
Run Code Online (Sandbox Code Playgroud)

zap*_*aph 8

你有什么问题?

由于@dan状态NSDecimalNumber是a NSNumber,这是对a的NSDecimalNumber所有方法的响应NSNumber.

如果需要,可以转换返回类型:

return (NSNumber *)dNumber;
Run Code Online (Sandbox Code Playgroud)

重新舍入和精确度:NSDecimalNumber在值的精确十进制表示中,是值 NSNumber的紧密二进制表示,大多数不是整数的十进制数不能以二进制(基数2)完全准确地表示.

您可以使用控制显示的格式NSNumberFormatter.NSLog使用该description方法进行显示并格式化Apple开发人员喜欢的数字.