2009-05-01 18 views
31

Ich versuche NSNumberFormatter zu verwenden, um eine Zahl auf 5 Dezimalstellen in einer iPhone-App zu runden, aber [formatter stringFromNumber:] gibt immer Zeichenfolgen auf 0,001 (3 Dezimalstellen) gerundet zurück. Was mache ich falsch?NSNumberFormatter rundet nur auf 3 Dezimalstellen

formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; 
[formatter setSecondaryGroupingSize:3]; 
[formatter setRoundingIncrement:[NSNumber numberWithDouble:0.00001]]; 

Antwort

67

Versuchen -setMaximumFractionDigits: und -setMinimumFractionDigits:

Diese die Anzahl der Ziffern nach dem Dezimaltrennzeichen konfigurieren.

+0

Ich denke, das ist, was ich gesucht habe. Danke vielmals. – ChadK

+1

Danke Nathan! Ich muss etwas beim Lesen der Dokumente verpassen, aber wie unterscheiden sich diese von setMaximumSignificantDigits: und setMinimumSignificantDigits: (abgesehen von dem Wort Significant )? –

+10

Bruchzahlen sind Zahlen nach der Dezimalstelle. Signifikante Ziffern sind die Gesamtpräzision der Zahl. Also 12,345 hat 5 signifikante Ziffern und 3 Bruchzahlen. Während 0,0012 2 signifikante Ziffern und 4 Bruchstellen hat. set (min/max) SignificantDigits: sind nützlich für wissenschaftliche Ausgabe: 123000 wäre 1.23E5 mit 3 signifikanten Ziffern. –

2

Versuchen Sie [formatter setFormat: @ "0.00000"]; anstelle von setRoundingIncrement :.

+2

Ich glaube nicht, setFormat: ist auf dem iPhone verfügbar. Siehe http://stackoverflow.com/questions/416037/iphone-nsnumberformatter-setformat – ChadK

+0

Eigentlich nehme ich das zurück. setFormat: @ "0.00000" funktioniert, aber es wird nicht abgerundet ... Ich bekomme immer 5 Zahlen nach dem Komma - z. B. 0,10000, wenn ich in diesem Fall wirklich nur 0,1 möchte. – ChadK

+0

Ah, Entschuldigung, ich habe missverstanden was du versucht hast zu erreichen. – smorgan

Verwandte Themen