Soy nuevo en el desarrollo de Objective-C y iPhone, y estoy tratando de almacenar valores de coma flotante en un NSMutableArray, pero cuando lo hago obtengo un error que dice "incompatible" escriba para el argumento 1 de 'addObject'. ¿Qué estoy haciendo mal? Intento crear una matriz de dobles con la que pueda realizar cálculos matemáticos.Cómo crear un NSMutableArray de valores de coma flotante
Respuesta
NSMutableArray solo contiene objetos, por lo que desea que se cargue una matriz con objetos NSNumber. Crea cada NSNumber para contener tu doble y luego agrégalo a tu matriz. Quizás algo como esto.
NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *num = [NSNumber numberWithFloat:10.0f];
[array addObject:num];
Repita según sea necesario.
Utilice un NSNumber para envolver su flotador, porque el diccionario necesita un objeto:
[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"];
/* or */
[myDictionary setObject:@0.2f forKey:@"theFloat"];
recuperarlo mediante el envío de floatValue:
float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue];
Código no se ha probado.
Puede ajustar muchos otros tipos de datos en NSNumber también, consulte documentation. También hay NSValue para algunas estructuras como NSPoint y NSRect.
En Cocoa, NSMutableDictionary (y todas las colecciones, realmente) requieren objetos como valores, por lo que no puede simplemente pasar cualquier otro tipo de datos. Como sugirieron sjmulder y Ryan, puede ajustar sus valores escalares en instancias de NSNumber (para número) y NSValue para otros objetos.
Si está representando un número decimal, por algo así como un precio, le sugiero también que mire y use NSDecimalNumber. A continuación, puede evitar problemas de imprecisión en el punto flotante y, en general, puede usar y almacenar el "valor" como NSDecimalNumber en lugar de representarlo con una primitiva en el código.
Por ejemplo:
// somewhere
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain];
NSMutableArray* prices= [[NSMutableArray array] retain];
// ...
[prices addObject:price];
NSMutableArray *muArray = [[NSMutableArray alloc] init];
NSNumber *float = [NSNumber numberWithFloat:210.0f];
NSNumber *float1 = [NSNumber numberWithFloat:211.0f];
[muArray addObject:float];
[muArray addObject:float1];
NSlog(@"my array is--%@",muArray);
Por favor explique su respuesta – Gwenc37
- 1. de coma flotante Limitaciones
- 2. formato de cadena para printf valores de coma flotante
- 3. C - redondeo de coma flotante
- 4. Prueba de igualdad de coma flotante. (FE_FLOATING_POINT_EQUALITY)
- 5. ensamblador x86: coma flotante comparar
- 6. coma flotante excepción
- 7. Comparación de coma flotante 0
- 8. Coseno en coma flotante
- 9. ¿Cómo puedo crear un NSMutableArray de estructuras?
- 10. problemas en la comparación de coma flotante
- 11. Operación de módulo de coma flotante
- 12. Python: eval() que fuerza los valores a coma flotante?
- 13. Ejemplos de imprecisión de coma flotante
- 14. Cómo almacenar valores enum en un NSMutableArray
- 15. Cómo intercambiar valores en NSMutableArray?
- 16. Tipos de coma flotante de tamaño fijo
- 17. formato de números de coma flotante
- 18. Comparación de coma flotante en Shell Script
- 19. Corrección de números en coma flotante
- 20. ¿Cómo se comparan los valores arbitrarios de coma flotante con el infinito?
- 21. ¿Cómo el operador C == decide si dos valores de coma flotante son iguales o no?
- 22. ¿Es asociativo de suma y multiplicación de coma flotante?
- 23. Cómo almacenar los valores de NSTimeInterval en un NSMutableArray?
- 24. Iterar a través de todos los posibles valores de coma flotante
- 25. ¿Cuántos números de coma flotante distintos en un rango específico?
- 26. Representando bien un número de coma flotante en python
- 27. Comparando los valores de punto flotante
- 28. ¿Qué significa error de coma flotante -1. # J?
- 29. Números de coma flotante y subnormales de 80 bits
- 30. Crear NSMutableArray o NSMutableSet único
Uso numberWithFloat, si usted no necesita la precisión. –