如何将 NSDecimalNumber 转换为 NSNumber

How to convert NSDecimalNumber to NSNumber

如何将 NSDecimalNumber 转换为 NSNumber?我在一个方法中创建了一个 NSDecimalNumber,该方法必须 return 一个 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;

}

你有什么问题?

正如@dan 所述 NSDecimalNumber 是一个 NSNumber,即 NSDecimalNumber 响应 NSNumber.

的所有方法

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

return (NSNumber *)dNumber;

四舍五入和精度:NSDecimalNumber是数值的精确十进制表示,NSNumber是数值的接近二进制表示,大多数不是整数的十进制数不能用二进制(基数 2)的完整精度。

您可以使用 NSNumberFormatter 控制显示格式。 NSLog使用了description的方式来显示和格式化苹果开发者喜欢的数字