2010-08-11 9 views
16

Nie rozumiem, jak działa NSNumberFormatterPercentStyle!Formatowanie w procentach

przykład:

NSNumber *number = [NSNumber numberWithFloat:90.5]; 
NSNumberFormatter *percentageFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 

NSString *strNumber = [percentageFormatter stringFromNumber:numbericString]; 
NSLog (strNumber); // Output: 9,050% 

po prostu chce pokazać "90,5%" (z poszanowaniem NSLocal). Co to jest NSNumberFormatterPercentStyle robiąc z 90.5 i dlaczego? I jak mogę uzyskać pożądany rezultat !?

Odpowiedz

26

Jego przypuszczenia, że ​​numer jest w zakresie 0-1, tak jak jest to procent

więc 0,905 byłoby ci 90,5%.

2

Nie znam tego języka, ale w oparciu o próbkę kodu i wynik, domyślam się, że formatator mnoży się przez 100, a następnie wstawia znak%, tak, że 1 staje się 100%. To, czego chcesz, to użycie .905, które powinno stać się 90,5%.

1

Formater "procentowy styl" oczekuje numeru 0.905, jeśli chcesz otrzymać 90.5%. 90.5 interpretuje się jako 1, to jest 9.050% dla 1.

3

Zacznijmy dalej:

  • 1 = 100%
  • 1/2 = 0,5 = 50%

"Procent" oznacza "na 100", więc 12% oznacza 12/100. Nie powinieneś "pomnażać przez 100", aby uzyskać wartość procentową, pomnożyć przez 100% (co jest tym samym, co pomnożenie przez 1, co oznacza, że ​​nic nie robi).

Nie wszyscy używają bazy 10 (choć większość "nowoczesnych" języków to robi), a nie każdy używa 100 jako mianownika. Zobacz na przykład perMillSymbol (lub kCFNumberFormatterPerMillSymbol). Nie ma formatu "permill", ale możliwe, że jest automatycznie używany do ustawień regionalnych, które nie używają wartości procentowych.

Zobacz także: ZNAK NA MILLE (‰) i NA TYSIĄC TYSIĘCY ZNAK (‱).

42

Po prostu ustaw mnożnik na 1, jeśli twoje liczby są już procentowe.

numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 
[numberFormatter setMaximumFractionDigits:0]; 
[numberFormatter setMultiplier:@1]; 
+0

dokładnie to, czego potrzebuję, dzięki! – kernix

+5

Doskonale! Powinna być zaakceptowaną odpowiedzią! – orkenstein

0

Pulkit Goyal za odebr mnożnik do 1 marki '50' do '50%”jest poprawna ...