2010-04-17 6 views
6

Je dois soustraire 0,5 du nombre a et définir la réponse au nombre b. Mon code semble fonctionner mais je ne suis pas sûr de ce que je fais de mal. L'erreur que je reçois est sur la ligne de soustraction, l'erreur indique incompatible type for argument 1 of 'decimalNumberBySubtracting:'.Soustraction NSDecimalNumber

Heres mon en-tête: (Note: Je ne ai montré les chiffres parce que l'en-tête est grand)

NSDecimalNumber *a; 
    NSDecimalNumber *b; 

Heres le reste: (On suppose que c'est dans un IBAction)

b = [a decimalNumberBySubtracting:0.5]; 

Si quelqu'un sait comment soustraire correctement toute aide serait appréciée.

Répondre

13

Le paramètre doit également être un NSDecimalNumber.

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

Dans votre exemple, vous utilisez un flotteur. Il y a deux raisons qui ne peuvent pas travailler:

  • Objective-C ne peut pas distinguis un flotteur et un objet à l'exécution, ce qui signifie que vous ne pouvez pas fournir un flotteur au lieu d'un objet.
  • La plupart des nombres décimaux ne peuvent pas être décrits exactement dans un système binaire, par conséquent vous devez travailler exclusivement avec les nombres binaires décimaux ou, mais pas les deux.
+0

Merci pour la réponse qui a du sens maintenant. – nosedive25