2010-04-17 54 views
6

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

继承人我的头:(注:我只显示的数字,因为头大)

NSDecimalNumber *a; 
    NSDecimalNumber *b; 

继承人的其余部分:(假设这是一个IBAction为)

b = [a decimalNumberBySubtracting:0.5]; 

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

回答

13

该参数也必须是NSDecimalNumber。

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

在你的例子中,你正在使用一个浮点数。有两个原因是无法工作的:

  • Objective-C无法在运行时区分浮点数和对象,这意味着您无法提供浮点数而不是对象。
  • 大多数十进制数不能准确地描述在二进制系统中,因此您必须仅使用十进制数二进制数,但不能同时使用二进制数。
+0

感谢您的回复,现在有道理。 – nosedive25 2010-04-17 12:50:49