2010-08-11 8 views
16

Ich verstehe nicht, wie NSNumberFormatterPercentStyle funktioniert!Formatierungsnummer als Prozentsatz

Beispiel:

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% 

ich einfach zeigen "90,5%" will (unter Beachtung NSLocal). Was macht NSNumberFormatterPercentStyle mit 90.5 und warum? Und wie kann ich mein gewünschtes Ergebnis bekommen?

Antwort

26

Seine Annahme, dass die Zahl im Bereich von 0-1 ist, da es ein Prozent

so 0,905 möchten Sie 90,5% erhalten.

2

Ich kenne diese Sprache nicht, aber basierend auf Ihrem Codebeispiel und der Ausgabe würde ich erraten, dass der prozentuale Formatierer mit 100 multipliziert wird und dann das% -Zeichen einfügt, sodass 1 100% wird. Was Sie wollen, ist .905, die 90,5% werden soll.

1

Der "Prozent Stil" Formatierer erwartet eine Zahl von 0.905, wenn Sie mit 90.5% enden möchten. Er interpretiert 90.5 wie aus 1, so ist es 9050% der 1.

3

Lassen Sie sich mit den Grundlagen beginnen:

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

"Prozent" bedeutet "von 100", also 12% bedeutet 12/100. Sie multiplizieren nicht mit 100, um einen Prozentwert zu erhalten, multiplizieren Sie mit 100% (das ist das gleiche wie mit 1 zu multiplizieren, was dasselbe ist als wenn Sie nichts tun).

Nicht jeder verwendet Basis 10 (obwohl die meisten "modernen" Sprachen es tun), und nicht jeder verwendet 100 als Nenner. Siehe zum Beispiel perMillSymbol (oder kCFNumberFormatterPerMillSymbol). Es gibt kein "Permill" -Format, aber es ist möglich, dass es automatisch für Gebietsschemata verwendet wird, die keine Prozentsätze verwenden.

Siehe auch: PER MILLE SIGN (‰) und PER TEN THOUSAND SIGN (‱).

42

Setzen Sie den Multiplikator einfach auf 1, wenn Ihre Zahlen bereits in Prozent sind.

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

genau einstellen, was ich brauche, danke! – kernix

+5

Ausgezeichnet! Sollte die akzeptierte Antwort sein! – orkenstein

0

Pulkit Goyal Antwort ist richtig ... den Multiplikator auf 1 macht '50' in '50%‘

Verwandte Themen