2012-09-19 10 views
5

Estoy tratando de establecer el número de dígitos de un flotador con un control segmentado.iPhone: Cuantos dígitos debería haber después de un punto flotante

Así que he creado un control segmentado con "0", "1", "2" y "3". Quiero establecer los dígitos después de la coma con una variable (self._segmentedControl.selectedSegmentIndex).

sé que puedo decidir el número de dígitos después de la coma debe ser como este:

sliderValue.text = [NSString stringWithFormat:@"%.3f",slider.value]; 

por favor alguien puede ayudar?

+1

Y su pregunta relacionada con Xcode es: ??? –

+0

cómo puedo establecer el número de digts con el resultado de self._segmentedControl.selectedSegmentIndex – MaxB

+0

el problema es que ** ese * no está relacionado con Xcode ***. –

Respuesta

7

Incluso puede hacerlo en un solo paso:

sliderValue.text = [NSString stringWithFormat:@"%.*f", numberOfDigits, slider.value]; 
2

Puede hacer esto en dos pasos.

NSString *format = [NSString stringWithFormat:@"%%.%df", numberOfDigits); 
sliderValue.text = [NSString stringWithFormat:format, slider.value]; 
+0

Oh. Mi. Dios. ¡Me lo dices con 8 segundos! ¡Y hasta usamos el mismo nombre de variable para la cadena de formato! –

+0

Downvoter: ** reason ??? ** ¡Por qué alguien viene aquí y rechaza al azar respuestas válidas! ¡Vete a la mierda, asesino anónimo! *** ¡Esta respuesta es buena! *** –

2
NSString *format = [NSString stringWithFormat:@"%%.%df", numberOfDecimalPlaces]; 
sliderValue.text = [NSString stringWithFormat:format, slider.value]; 

Esto debería hacer el truco. Tenga cuidado con los ataques de cadena de formato.

+0

Guau, esta vez casi obtuvimos la misma solución. :-) – DrummerB

+0

Downvoter: ** reason ??? ** –

+0

Probablemente alguien le gusta la solución de un trazador de líneas? – nhahtdh

1

Compruebe si esto funciona o no. Solo probé esto con C++, pero como la documentación para String Format apunta a IEEE printf specification, creo que también debería funcionar para Objective-C.

sliderValue.text = [NSString stringWithFormat: @"%.*f", places, slider.value]; 
+0

Funciona. (No vi tu respuesta antes de presionar "Publicar"). –

Cuestiones relacionadas