2011-02-10 10 views
5

¿Cuál es la forma correcta de representar el valor doble como NSString? En mi código, está calculando o más bien haciendo algún tipo de redondeo ... No estoy seguro. A continuación está mi código;Representa el valor doble como NSString

X = [NSString stringWithFormat:@"%d", [abc doubleValue] - [xyz doubleValue]]; 

estoy recibiendo abc es 69206000000, 31687000000 xyz es, X es 58720256

por favor me ayude.

Respuesta

13

Utilice el modificador de formato %f para mostrar un valor doble: %d en su código hace referencia a un valor entero. (Consulte String Format Specifiers para obtener más información.)

+5

'% f' muestra un flotador. La respuesta correcta es '% lf' para flotación larga (doble). – svoisen

+0

Los [especificadores de formato NSString] de Apple (https://developer.apple.com/library/mac/documentation/cocoa/conceptual/strings/articles/formatSpecifiers.html) dicen que '% f' es un" flotante de 64 bits- número de punto ('doble')." Además, se documenta que el argumento 'l' (en la Tabla 2 para modificadores de longitud) se aplica solo a' d', 'o',' u', 'x' o' X'. – Tim

+0

Y aún más, la Tabla 3 dice explícitamente: "'% f 'funciona para flotantes y dobles al formatear ... " – Tim

1

% d significa entero. Use% f. Lea sobre los especificadores de formato.

3

% d es para enteros, por lo que obtendrá un resultado funky pasando en un doble o flotación. Tal vez puedas probar:

NSString *str = [NSString stringWithFormat:@"%f", [abc doubleValue] - [xyz doubleValue]]; 
7

Uso %lf por el valor doble

X = [NSString stringWithFormat:@"%lf", [abc doubleValue] - [xyz doubleValue]]; 

Hope esto le ayudará.

Cuestiones relacionadas