2009-05-01 14 views
31

Próbuję użyć NSNumberFormatter, aby zaokrąglić liczbę do 5 miejsc po przecinku w aplikacji na iPhone'a, ale [formatter stringFromNumber:] zawsze zwraca ciągi zaokrąglone do 0,001 (3 miejsca dziesiętne). Co ja robię źle?NSNumberFormatter przyjmuje tylko 3 miejsca po przecinku

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

Odpowiedz

67

Spróbuj -setMaximumFractionDigits: i -setMinimumFractionDigits:

Są skonfigurować liczbę cyfr po separatorze dziesiętnym.

+0

Myślę, że tego właśnie szukałem. Wielkie dzięki. – ChadK

+1

Dziękuję Nathan! Muszę czegoś przegapić podczas czytania dokumentów, ale jak one różnią się od setMaximumSignificantDigits: i setMinimumSignificantDigits: (oprócz słowa Znaczący )? –

+10

Cyfry ułamkowe są liczbami po przecinku. Istotne cyfry to ogólna precyzja liczby. Więc 12.345 ma 5 cyfr znaczących i 3 cyfry frakcji. 0,0012 ma 2 cyfry znaczące i 4 cyfry frakcji. Zestaw (min./maks.) Znaczące cyfry: są użyteczne dla wyników naukowych: 123000 będzie 1,23E5 z 3 cyframi znaczącymi. –

2

Spróbuj [formatter setFormat: @ "0.00000"]; zamiast setRoundingIncrement :.

+2

Nie sądzę, setFormat: jest dostępny na iPhone. Zobacz http://stackoverflow.com/questions/416037/iphone-nsnumberformatter-setformat – ChadK

+0

Właściwie to cofam. setFormat: @ "0.00000" działa, ale nie zaokrągla ... Zawsze otrzymuję 5 liczb za przecinkiem - np. 0.10000, kiedy tak naprawdę chcę tylko 0.1 w takim przypadku. – ChadK

+0

Ach, przepraszam, źle zrozumiałem, co próbowaliście osiągnąć. – smorgan

Powiązane problemy