with tools programming ponce modern learning images forsyth for computer artificial approach applications and analyzing algorithms objective-c nsstring

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