Se ho un numero int aNum = 2000000
come posso formattare questo in modo che possa visualizzarlo come NSString 2.000.000?Come aggiungere virgole per numerare ogni 3 cifre nell'obiettivo C?
risposta
Non eseguire la formattazione del proprio numero. Quasi certamente non riuscirai a risolvere tutti i casi limite o a gestire correttamente tutte le possibili impostazioni locali. Utilizzare NSNumberFormatter
per formattare i dati numerici in una rappresentazione stringa localizzata.
si può usare il metodo istanza NSNumberFormatter
-setGroupingSeparator:
per impostare il separatore di raggruppamento per @","
(o meglio ancora [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator]
; grazie @ntesler) e -setGroupingSize:
mettere un separatore di raggruppamento ogni 3 cifre.
Utilizzare NSNumberFormatter
.
particolare:
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important!
NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:2000000]];
[formatter release];
Per default NSNumberFormatter
utilizza localizzazione corrente in modo che i separatori di raggruppamento sono impostate sui valori corretti per impostazione predefinita. La cosa fondamentale è ricordarsi di impostare uno stile numerico.
+1 per usare gli stili esistenti e un esempio funzionante. – zekel
Suggerimento: nuovo è old school .... usa alloc init – MCKapur
sì, ho avuto problemi analoghi che non analizzava "200.000", anche se avevo impostato le impostazioni locali in inglese UK, finché non avevo impostato lo stile su NSNumberFormatterDecimalStyle. Pensa che comprenderebbe solo la stringa "200000" –
C'è un static method on NSNumberFormatter
che fa proprio quello che vi serve:
int aNum = 2000000;
NSString *display = [NSNumberFormatter localizedStringFromNumber:@(aNum)
numberStyle:NSNumberFormatterDecimalStyle];
In questo modo è un po 'più succinta rispetto alla creazione di un nuovo NSNumberFormatter
se non è necessario eseguire alcuna configurazione aggiuntiva del formattatore.
Pensate un po 'che otterrò questo post cercando un campione. Quindi, se si sta lavorando con il numero fare attenzione su prossimi params:
setNumberStyle:NSNumberFormatterCurrencyStyle // if you are working with currency
Si potrebbe anche
setNumberStyle:NSNumberFormatterDecimalStyle
Tutto il codice è per ARC.
Se si lavora con numeri interi e la necessità di risultato come ad esempio 200.000
int value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString * newString = [formatter stringFromNumber:[NSNumber numberWithInteger:value]];
se si sta lavorando con galleggiante e hanno bisogno al risultato ottenere ottenere come 200,000.00
float value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * newString = [formatter stringFromNumber:[NSNumber numberWithFloat:value]];
EDIT
Per avere la possibilità di utilizzare separatori digitali diversi utilizzare NSLocale
. Aggiungi al codice in cui si specifica NSLocale
on Locale Identifier:
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]];
o uso corrente locale:
[formatter setLocale:[NSLocale currentLocale]];
Se voglio punto (.) Invece di virgola (,) allora? – Birju
modo semplice per usare 'NSLocale' basta aggiungere' [formatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: @ "de_DE"]]; 'per usare separatori diversi, dipende dallo stile digitale locale – Nazir
Come visualizzare 5.234.00 ... i è necessario visualizzare 2 numeri decimali – Singapore
Ancora più facile:
NSNumber *someNumber = @(1234567890);
NSString *modelNumberString = [NSString localizedStringWithFormat:@"%@", someNumber];
NSLog(@"Number with commas: %@", modelNumberString);
collega mi ha insegnato questo oggi.#amazing
Basta ringraziare per lui ... –
@Yujean non funziona per me – Dalvik
non funziona neanche per me. nessuna virgola mostra –
Swift versione
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = decimalPlaces
let result = formatter.stringFromNumber(NSNumber(double: 8.0))
Una soluzione semplice potrebbe essere questo. La mia risposta è quasi la stessa della risposta di @ Nazir, ma con un piccolo trucco.
double current_balance = 2000000.00;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
//[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; //if you want for currency with $ sign
[formatter setMinimumFractionDigits:2]; // Set this if you need 2 digits
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * currency_format = [NSString stringWithFormat:@"%@", [formatter stringFromNumber:[NSNumber numberWithDouble:current_balance]]];
- 1. Oracle varchar per numerare
- 2. Add interruzione di riga dopo 3 virgole
- 3. aggiungere virgole per un numero in jQuery
- 4. con 3 cifre decimali finali, un separatore decimale di migliaia e virgole dopo quello
- 5. Massimo 3 cifre, fino a 3 decimali
- 6. Separare i numeri lunghi di 3 cifre
- 7. Come si usa plyr per numerare le righe?
- 8. NSNumberFormatter per mostrare un massimo di 3 cifre
- 9. Come faccio a numerare attraverso un JObject?
- 10. Rails 3: viste differenti per ogni modello
- 11. Crea 3 millisecondi cifre con PHP
- 12. aggiungi virgole usando String.Format per il numero e
- 13. Regex per 3 cifre (mai in mente l'ordine)?
- 14. problema C# Decimal.Parse con virgole
- 15. come aggiungere virgole a un numero in swift?
- 16. Come abbinare esattamente 3 cifre in preg_match di PHP?
- 17. Come utilizzare codici colore a 3 cifre anziché codici colore a 6 cifre in CSS?
- 18. Come formattare un intero di 3 cifre in una stringa di 4 cifre?
- 19. Restituendo nth Fibonacci numerare la sequenza?
- 20. kable visualizza un numero diverso di cifre in ogni colonna
- 21. Come posso aggiungere il separatore delle virgole in virgola a questo formato di stringa: (% 0,2f)?
- 22. Ripeti animazione ogni 3 secondi
- 23. Algoritmo per sommare cifre?
- 24. Uscita flusso C++ con 3 cifre dopo il punto decimale. Come?
- 25. Come fare una casella di testo accetta solo cifre e formati numeri con virgole?
- 26. È necessario aggiungere reset.css per bootstrap 3?
- 27. Come aggiungere attributo class per selezionare tag in Rails 3
- 28. Come dividere un numero in singole cifre in C#?
- 29. jQuery può aggiungere virgole mentre si digita un numero utente?
- 30. Come aggiungere Google basemaps in openlayers-3?
Cool, sono impostato su I -setGroupingSize:? O ho bisogno di -setFormat:? – RexOnRoids
Ho anche dovuto fare [formatter setUsesGroupingSeparator: YES]; – adam
Meglio non localizzarlo con '[formatter setGroupingSeparator: [[NSLocale currentLocale] objectForKey: NSLocaleGroupingSeparator]];' – ntesler