Wenn ich eine Nummer habe, int aNum = 2000000
wie formatiere ich diese, damit ich sie als NSString 2.000.000 anzeigen kann?
objective-c
nsstring
RexOnRoids
quelle
quelle
[formatter setGroupingSeparator: [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator]];
Verwenden Sie
NSNumberFormatter
.Speziell:
NSNumberFormatter *formatter = [NSNumberFormatter new]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important! NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:2000000]]; [formatter release];
Standardmäßig
NSNumberFormatter
wird das aktuelle Gebietsschema verwendet, sodass die Gruppentrennzeichen standardmäßig auf die richtigen Werte gesetzt werden. Der Schlüssel ist, sich daran zu erinnern, einen Zahlenstil festzulegen.quelle
Es gibt eine statische Methode
NSNumberFormatter
, die genau das tut, was Sie brauchen:int aNum = 2000000; NSString *display = [NSNumberFormatter localizedStringFromNumber:@(aNum) numberStyle:NSNumberFormatterDecimalStyle];
Diese Methode ist etwas prägnanter als das Erstellen einer neuen,
NSNumberFormatter
wenn Sie keine zusätzliche Konfiguration des Formatierers vornehmen müssen.quelle
Sogar einfacher:
NSNumber *someNumber = @(1234567890); NSString *modelNumberString = [NSString localizedStringWithFormat:@"%@", someNumber]; NSLog(@"Number with commas: %@", modelNumberString);
Mitarbeiter haben mir das heute gerade beigebracht. #tolle
quelle
Denken Sie einige, wie ich diesen Beitrag auf der Suche nach Beispiel bekommen werde. Wenn Sie also mit Zahlen arbeiten, achten Sie auf die nächsten Parameter:
setNumberStyle:NSNumberFormatterCurrencyStyle // if you are working with currency
Es könnte auch sein
setNumberStyle:NSNumberFormatterDecimalStyle
Der gesamte Code ist für ARC.
Wenn Sie mit Integer arbeiten und Ergebnisse wie 200.000 erhalten möchten
int value = 200000; NSNumberFormatter * formatter = [NSNumberFormatter new]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; NSString * newString = [formatter stringFromNumber:[NSNumber numberWithInteger:value]];
Wenn Sie mit Float arbeiten und Ergebnisse wie 200.000,00 erhalten möchten
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]];
BEARBEITEN
Um die Fähigkeit zu haben, verschiedene digitale Separatoren zu verwenden, verwenden Sie
NSLocale
. Zum Code hinzufügen, woNSLocale
in der Gebietsschema-ID angegeben:[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]];
oder verwenden Sie die aktuelle lokale:
[formatter setLocale:[NSLocale currentLocale]];
quelle
NSLocale
nur add verwenden[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]];
, um verschiedene Trennzeichen zu verwenden, hängt vom lokalen digitalen Stil absetMaximumFractionDigits
, um die benötigten Ziffern einzurichtenSchnelle Version
let formatter = NSNumberFormatter() formatter.numberStyle = .DecimalStyle formatter.maximumFractionDigits = decimalPlaces let result = formatter.stringFromNumber(NSNumber(double: 8.0))
Von http://ios.eezytutorials.com
quelle
Eine einfache Lösung könnte dies sein. Meine Antwort ist fast dieselbe wie die von @ Nazir, aber mit einem kleinen Trick.
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]]];
quelle
Für Swift 4.0
let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.minimumFractionDigits = 2 formatter.maximumFractionDigits = 2 let result = formatter.string(from: NSNumber(value: 123456))
quelle
Für diejenigen, die dies mit Zahlenfolgen und nicht nur mit ganzen Zahlen (dh großen Zahlen) tun müssen, habe ich das folgende Makro erstellt:
#define addCommas(__string) (\ (^NSString *(void){\ NSString *__numberString = __string;\ NSString *__integerPortion = __numberString;\ NSString *__decimalPortion = @"";\ if ([__string containsString:@"."]) {\ __integerPortion = [__numberString componentsSeparatedByString:@"."][0];\ __decimalPortion = st(@".%@", [__numberString componentsSeparatedByString:@"."][1]);\ }\ int __i = (int)__integerPortion.length-3;\ while (__i > 0) {\ __integerPortion = st(@"%@,%@", substringInRange(__integerPortion, 0, __i), substringInRange(__integerPortion, __i, (int)__integerPortion.length));\ __i -= 3;\ }\ __numberString = st(@"%@%@", __integerPortion, __decimalPortion);\ return __numberString;\ })()\ )
quelle