【问题标题】: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]; 
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-08-31
              • 1970-01-01
              • 2023-03-06
              • 2011-02-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多