简体   繁体   English

如何将NSDecimalNumber转换为NSNumber

[英]How to convert NSDecimalNumber to NSNumber

How to convert NSDecimalNumber To NSNumber? 如何将NSDecimalNumber转换为NSNumber? I have a NSDecimalNumber created inside a method which have to return a NSNumber object which can be checked later with [ ... isKindOfClass:[NSNumber class]] 我在一个方法中创建了一个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;

}

What is wrong with what you have? 你有什么问题?

As @dan states NSDecimalNumber is a NSNumber , that is a NSDecimalNumber responds to all the methods of a NSNumber . 由于@dan状态NSDecimalNumberNSNumber ,因此NSDecimalNumber响应NSNumber所有方法。

You can cast the return type if you need to: 如果需要,可以转换返回类型:

return (NSNumber *)dNumber;

Re rounding and accuracy: NSDecimalNumber in an exact decimal representation of the value, NSNumber is a close binary representation of the value, most decimal numbers that are not integers can not be represented with complete accuracy in binary (base 2). 重新舍入和准确性: NSDecimalNumber在值的精确十进制表示中, NSNumber是值的紧密二进制表示,大多数不是整数的十进制数不能以二进制(基数2)完全准确地表示。

You control the displayed format with NSNumberFormatter . 您可以使用NSNumberFormatter控制显示的格式。 NSLog used the description method for display and formats the number the Apple developer liked. NSLog使用description方法进行显示并格式化Apple开发人员喜欢的数字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM