如何将NSDecimalNumber转换为NSNumber

时间:2016-02-11 17:44:11

标签: 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;

}

1 个答案:

答案 0 :(得分:7)

你有什么问题?

由于@dan状态NSDecimalNumberNSNumber,因此NSDecimalNumber会响应NSNumber的所有方法。

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

return (NSNumber *)dNumber;

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

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