2012-01-23 7 views
14

¿Sabe cómo puedo convertir el valor de flotación en nsstring porque con mi código hay un error?Convertir el valor de flotación en NSString

Mi Código:

- (float)percent:(float)a :(float)b{ 
    return a/b * 100; 
} 

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 
    // .... 

    float tx_nb_demande_portabilite = [self percent: [(NSNumber*) [stat nb_demande_portabilite] floatValue] :[(NSNumber*) [stat nb_users] floatValue]]; 
    NSString *tx_nb_demande_portabilite_st = [NSString stringWithFormat:@"%@", tx_nb_demande_portabilite]; 
//.... 
} 

El error:

EXC_BAD ACCESS for NSString *tx_nb_demande_portabilite_st = [NSString stringWithFormat:@"%@", tx_nb_demande_portabilite]; 

Gracias por su ayuda.

Respuesta

44

Es necesario utilizar %f especificador de formato de flotador, no %@.

NSString *str = [NSString stringWithFormat:@"%f", myFloat]; 

Para utilizar número específico de dígitos después del uso decimal %.nf donde n es el número de dígitos después del punto decimal.

// 3 digits after decimal point 
NSString *str = [NSString stringWithFormat:@"%.3f", myFloat]; 

Obj-C utiliza el formato de estilo C printf. Por favor marque printf man page para cualquier otro formato posible.

1

@"%f" suena como cadena de formato más apropiada para float.

+1

+1 No sólo "suena como" un formato más apropiado - que es * de lejos * el formato más apropiado para un 'float' :) – dasblinkenlight

+0

Eso es lo que quise decir, poniéndolo suavemente ;-) –

1
[NSString stringWithFormat:@"%f", tx_nb_demande_portabilite]; 
4

una opción más:

NSString * str = [NSNumber numberWithFloat:value].stringValue; 
0

Un enfoque moderno (y menos detallado) sería:

NSString *str = @(myFloat).description;