2016-02-11 263 views
1

如何将NSDecimalNumber转换为NSNumber?我有一个NSDecimalNumber具有返回,可后来用查了的NSNumber对象的方法内部创建[... isKindOfClass:[NSNumber的类]如何将NSDecimalNumber转换为NSNumber

- (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; 

} 
+2

'NSDecimalNumber'已经是'NSNumber'的子类,并且在用'[x isKindOfClass:[NSNumber class]]'检查时将返回YES。你的问题是什么? – dan

+0

我不知道使用“isKindOfClass:”方法检查对象类不区分类和子类。 – Adobels

+1

'isKindOfClass:'如果对象是您正在检查的类的子类,则为true,在这种情况下'isMemberOfClass:'将返回false – dan

回答

3

有什么不对的,你有什么?

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

return (NSNumber *)dNumber; 

再取整和准确性:

,如果你需要,就可以把返回类型的值的精确十进制表示NSDecimalNumberNSNumber是价值的亲密二进制表示,大多数十进制数不是整数,不能用二进制完全准确地表示(基数2)。

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