2012-09-19 8 views
5

Sto cercando di impostare il numero di cifre di un float con un controllo segmentato.iPhone: Quante cifre dovrebbero essere dopo un punto di un float

Quindi ho creato un controllo segmentato con "0", "1", "2" e "3". Desidero impostare le cifre dopo la virgola con una variabile (self._segmentedControl.selectedSegmentIndex).

So che posso decidere quante cifre dopo la virgola dovrebbe essere simile a questo:

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

qualcuno può aiutarmi?

+1

e la tua domanda Xcode relativo è: ??? –

+0

come posso impostare il numero di cifre con l'output di self._segmentedControl.selectedSegmentIndex – MaxB

+0

il problema è che ** quello * non è legato a Xcode ***. –

risposta

7

Si può anche farlo in un solo passo:

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

È possibile eseguire questa operazione in due passaggi.

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

Oh. Mio. Dio. Me l'hai battuto con 8 secondi! E abbiamo persino usato lo stesso nome di variabile per la stringa di formato! –

+0

Downvoter: ** reason ??? ** Perché qualcuno viene qui e fa un downvoting casuale di risposte valide! Vai a farti fottere, assassino anonimo! *** Questa risposta è buona !!! –

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

Questo dovrebbe fare il trucco. Fai attenzione agli attacchi con stringhe di formato.

+0

Wow, questa volta abbiamo quasi ottenuto la stessa identica soluzione. :-) – DrummerB

+0

Downnoter: ** reason ??? ** –

+0

Probabilmente a qualcuno piace l'unica soluzione di linea? – nhahtdh

1

Verificare se questo funziona o no. Ho solo provato questo con C++, ma poiché la documentazione per String Format punta a IEEE printf specification, credo che dovrebbe funzionare anche per Objective-C.

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

Funziona. (Non ho visto la tua risposta prima di premere "Post".) –