objective-c - tools - forsyth ponce computer vision pdf
Objective-c convierte Long y float a String (3)
Debe utilizar NSNumberFormatter, por ejemplo:
NSNumberFormatter * nFormatter = [[NSNumberFormatter alloc] init];
[nFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *num = [nFormatter numberFromString:@"12345678.1234"];
[nFormatter release];
Necesito convertir dos números a cadena en Objective-C.
Uno es un número largo y el otro es un flotador.
Busqué en Internet una solución y todo el mundo usa stringWithFormat:
pero no puedo hacer que funcione.
lo intento
NSString *myString = [NSString stringWithFormat: @"%f", floatValue]
para 12345678.1234 y obtenga "12345678.00000" como salida
y
NSString *myString = [NSString stringWithFormat: @"%d", longValue]
¿Alguien me puede mostrar cómo utilizar stringWithFormat: correctamente?
Este artículo describe cómo usar varias cadenas de formato para convertir números / objetos en instancias de NSString:
Guía de programación de cadenas: Formateo de objetos de cadenas
Que utilizan los formatos especificados aquí:
Guía de programación de cadenas: Especificadores de formato de cadenas
Para tu carroza, querrías:
[NSString stringWithFormat:@"%1.6f", floatValue]
Y por tu larga
[NSString stringWithFormat:@"%ld", longValue] // Use %lu for unsigned longs
Pero honestamente, a veces es más fácil usar la clase NSNumber
:
[[NSNumber numberWithFloat:floatValue] stringValue];
[[NSNumber numberWithLong:longValue] stringValue];
floatValue tiene que ser un doble. Al menos esto se compila correctamente y hace lo que se espera en mi máquina. Los flotadores solo pueden almacenar aproximadamente 8 dígitos decimales y su número 12345678.1234 requiere más precisión que eso, por lo tanto, solo los 8 dígitos más significativos se almacenan en un flotador.
double floatValue = 12345678.1234;
NSString *myString = [NSString stringWithFormat: @"%f", floatValue];
resultados en
2011-11-04 11:40:26.295 Test basic command line[7886:130b] floatValue = 12345678.123400