2012-01-06 5 views
7

¿Hay alguna forma de pasar una variable para el parámetro de precisión de coma flotante en las funciones de formato de cadenas de estilo printf en Objective-C (o incluso C)? Por ejemplo, en TCL y otros lenguajes de scripting, puedo hacer algo como esto:Interpolación de variables dentro de las funciones de formato de estilo printf

set precision 2 
puts [format "%${precision}f" 3.14159] 

y la salida será, por supuesto, 3,14. Me gustaría hacer algo similar en Objective-C:

float precision = 2 
NSString *myString = [NSString stringWithFormat:@".2f", 3.14159] 

excepto que me gustaría incluir la precisión como una variable. ¿Cómo puede hacerse esto?

+0

usted podría utilizar stringWithFormat dos veces: una vez para ensamblar el formato cadena y la segunda vez para aplicar el formato creado a su valor. –

Respuesta

6

Sí, el string format specifiers para printf, que son utilizados por Cacao para el formateo, incluyen un especificador variable de precisión, * colocado después del punto decimal:

int precision = 3; 
NSLog(@"%.*f", precision, 3.14159); 
NSString *myString = [NSString stringWithFormat:@".*f", precision, 3.14159]; 
+0

Perfecto. Esto es exactamente lo que estaba buscando. – Ampers4nd

1

Puede hacerlo al hacer que su cadena de formato variable, y luego pasa que a stringWithFormat, así:

float precision = 2; 
NSString* formatString = [NSString stringWithFormat:@"%%.%df", precision]; 
NSString* myString = [NSString stringWithFormat:formatString, 3.14159]; 

La cadena de formato dice que desea un símbolo "%" seguido de un "" y luego el valor almacenado en la variable "precisión" seguido de "f".

Cuestiones relacionadas