2012-07-19 12 views
5

Chciałbym utworzyć sformatowany wynik liczby zmiennoprzecinkowej z poprawną lokalizacją na Cocoa-Touch. Wyjście powinno być równoważne z printf("%<a>.<b>f", n), gdzie <a> jest całkowitą liczbą cyfr, a <f> jest maksymalną liczbą cyfr ułamkowych.Jak sformatować i wydrukować liczby zmiennoprzecinkowe na iOS?

Konfiguracja NSNumberFormatter z <a>=6 i <f>=2 (Platforma jest iOS 5.1 SDK, Xcode 4.3.3 i iPhone Simulator 5,1)

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init]; 
[nf setNumberStyle:NSNumberFormatterDecimalStyle]; 
[nf setPaddingCharacter:@" "]; 
[nf setUsesGroupingSeparator:NO]; 
[nf setLocale:[NSLocale autoupdatingCurrentLocale]]; 
[nf setUsesSignificantDigits:YES]; 
[nf setMaximumSignificantDigits:6]; 
[nf setMaximumFractionDigits:2]; 
[nf setRoundingMode:NSNumberFormatterRoundFloor]; 
NSLog(@"Test: %@", [nf stringFromNumber:[NSNumber numberWithDouble:2.64324897]]); 

Oczekiwany wyjście (z niemieckiego regionu): Test: 2,64

Obserwowane wyjście (z niemiecką lokalizacją): Test: 2,64324

Inne obserwacje: Próbowałem użyć różnych wartości dla cyfr ułamkowych, np. [nf setMaximumFractionDigits:4] lub [nf setMaximumFractionDigits:0]. Wynik pozostaje niezmieniony, wydaje się, że cyfry ułamków są ignorowane. Zmiana ustawień regionalnych na US zmienia tylko numer , na ., a nie liczbę cyfr ułamkowych.

Pytanie: Jak Mogę przetłumaczyć ciąg printf -format poprawnie do NSNumberFormatter?

Odpowiedz

11

Ryan nie jest całkowicie błędny. Użyj metody localizedStringWithFormat:

użyciem objective-c

NSNumber *yourNumber = [nf numberFromString:yourString]; 
//to create the formatted NSNumber object 

NSString *yourString = [NSString localizedStringWithFormat:@"%.2F", yourNumber]; 
//to create the localized output 

Korzystanie SWIFT 3

let yourString: String 
yourString = String.localizedStringWithFormat("%.2F", yourDoubleNumber) //no need for NSNumber Object 

Trochę późno, ale jeszcze może pomóc. Powodzenia!

+0

Tak, to robi dokładnie to, co musi zrobić! Dziękuję, nawet spóźniona odpowiedź jest doceniana! – user8472

+0

Nie ma za co! Miałem także trudności z lokalizacją. Powodzenia! – JFS

+0

Magia. I tam byłem, pisząc kategorie NSNumber ... kiedy wszystko, czego potrzebowałem, było już tam, schludne i proste. Jest to rodzaj małych rzeczy, które sprawia, że ​​tak lubimy Apple. – KPM

Powiązane problemy