6

我需要从数字 a 中减去 0.5 并将答案设置为数字 b。我的代码看起来可以工作,但我不确定我做错了什么。我得到的错误在减法线上,错误说incompatible type for argument 1 of 'decimalNumberBySubtracting:'

这是我的标题:(注意:我只显示了数字,因为标题很大)

    NSDecimalNumber *a;
    NSDecimalNumber *b;

剩下的就是:(假设这是在 IBAction 中)

    b = [a decimalNumberBySubtracting:0.5];

如果有人知道如何正确减去任何帮助,将不胜感激。

4

1 回答 1

14

该参数也必须是 NSDecimalNumber。

NSDecimalNumber *half = [NSDecimalNumber decimalNumberWithString:@"0.5"];
b = [a decimalNumberBySubtracting:half];

在您的示例中,您使用的是浮点数。不能工作的原因有两个:

  • Objective-C 在运行时无法区分浮点数和对象,这意味着您不能提供浮点数而不是对象。
  • 大多数十进制数无法在二进制系统中精确描述,因此您必须专门使用十进制二进制数,但不能同时使用两者。
于 2010-04-17T12:46:12.613 回答