2010-04-17 20 views
6

Necesito restar 0.5 del número a y establecer la respuesta al número b. Mi código parece funcionar, pero no estoy seguro de lo que estoy haciendo mal. El error que obtengo está en la línea de resta, el error dice incompatible type for argument 1 of 'decimalNumberBySubtracting:'.NSDecimalNumber resta

Heres mi cabecera: (Nota: Sólo mostraron los números porque la cabecera es grande)

NSDecimalNumber *a; 
    NSDecimalNumber *b; 

Aquí está el resto: (Suponga que esto es en un IBAction)

b = [a decimalNumberBySubtracting:0.5]; 

Si alguien sabe cómo restar adecuadamente cualquier ayuda sería apreciada.

Respuesta

13

El parámetro debe ser también NSDecimalNumber.

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

En el ejemplo que estamos utilizando un flotador. Hay dos razones que no pueden trabajar:

  • de Objective-C no puede distinguis un flotador y un objeto en tiempo de ejecución, lo que significa que no puede proporcionar un flotador en lugar de un objeto.
  • La mayoría de los números decimales no se pueden describir exactamente en un sistema binario, por lo tanto, debe trabajar exclusivamente con números binarios decimales o, pero no ambos.
+0

Gracias por la respuesta que tiene sentido ahora. – nosedive25