È necessario stampare un valore float in un'area di larghezza limitata nel modo più efficiente. Sto usando un NSNumberFormatter
, e ho impostato due numeri dopo il punto decimale come predefinito, in modo che quando ho un numero come 234.25
è stampato come è: 234.25
. Ma quando ho 1234.25
voglio stamparlo come: 1234.3
, e 11234.25
dovrebbe essere stampato 11234
.Limitare sia il numero frazionario sia il numero totale di cifre durante la formattazione di un galleggiante per la visualizzazione
Ho bisogno di un massimo di due cifre dopo il punto, e un massimo di cinque cifre in generale se ho cifre dopo il punto, ma dovrebbe anche stampare più di cinque cifre se la parte intera ha più.
Non vedo la possibilità di limitare il numero totale di cifre in NSNumberFormatter
. Questo significa che dovrei scrivere la mia funzione per formattare i numeri in questo modo? In tal caso, qual è il modo corretto di ottenere il conteggio delle cifre nell'intero e nelle parti frazionarie di un numero? Preferirei anche lavorare con CGFLoat
, anziché con lo NSNumber
per evitare conversioni di tipo extra.
@JacquesCousteau lo so; è ancora un esempio, giusto? –
Grazie. Questa implementazione sembra abbastanza universale, ma sono preoccupato per l'efficienza. Può essere usato qualcosa di più efficiente di NSString? O non c'è modo di contare il numero di cifre nel numero oltre al conteggio della lunghezza della stringa? Ho intenzione di fare questa conversione continuamente in ogni fotogramma di animazione durante tutto il tempo di esecuzione del programma. Non sarà difficile? – BartoNaz
@BartoNaz: il logaritmo in base 10 di un numero è approssimativamente la lunghezza - 1 delle sue cifre intere: 'log10f (11123.25) -> 4.046221' –