【问题标题】:Get warning when convert double to NSDecimalNumber将 double 转换为 NSDecimalNumber 时收到警告
【发布时间】:2015-06-16 06:41:58
【问题描述】:
我正在尝试将 double 转换为 NSDeciamlNumber。这是我的代码:
- (NSDecimalNumber *)myMethod {
double amount = 42;
...
return [NSDecimalNumber numberWithDouble:amount]; // Get warning here
}
但我收到以下警告:
Incompatible pointer types returning 'NSNumber *' from a function with result type 'NSDecimalNumber *'
我做错了什么,我该如何解决?
【问题讨论】:
标签:
ios
objective-c
methods
double
nsdecimalnumber
【解决方案1】:
numberWithDouble:NSDecimalNumber 方法返回 NSNumber。
在您的方法中,您希望返回小数,因此如果您分配一个带有小数的新 NSDecimalNumber(在您的示例中为金额),则可以。
可以使用以下方式来排除错误:
-(NSDecimalNumber *)myMethod
{ double amount = 42; ...
return [[NSDecimalNumber alloc] initWithDouble: amount];
}
【解决方案2】:
根据文档 [NSDecimalNumber numberWithDouble:_] 返回一个 NSNumber,因此您应该更改方法声明
- (NSNumber *)myMethod {
double amount = 42;
...
return [NSDecimalNumber numberWithDouble:amount]; // Get warning here
}
【解决方案3】:
试试这个。可能会成功
- (NSNumber *)myMethod {
double amount = 42;
[NSNumber numberWithDouble:amount]
return [NSDecimalNumber numberWithDouble:amount];
}
【解决方案4】:
numberWithDouble: 方法返回一个 NSNumber 对象,但您假设返回的是 NSDecimalNumber。
改成
- (NSDecimalNumber *)myMethod {
double amount = 42;
return [[NSDecimalNumber alloc]initWithDouble:amount];
}
【解决方案5】:
试试下面的代码——
- (NSDecimalNumber *)myMethod {
double amount = 42;
...
return [[NSDecimalNumber alloc] initWithDouble: amount];
}