2009-12-22 4 views
5

Ich habe den folgenden CodeNSDecimalNumber Nullen folgende Komma (iPhone SDK)

(...) 
numberStyle = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain 
                    scale:2 
                  raiseOnExactness:NO 
                  raiseOnOverflow:NO 
                  raiseOnUnderflow:NO 
                 raiseOnDivideByZero:NO]; 

strThree = textFieldThree.text; 
strThree = [strThree stringByReplacingOccurrencesOfString:@"." withString:@""]; 

fieldOneDNa = (NSDecimalNumber *)[NSDecimalNumber decimalNumberWithString:strThree]; 
oneHundred = (NSDecimalNumber *)[NSDecimalNumber decimalNumberWithString:@"100"]; 
fieldOneDN = [fieldOneDNa decimalNumberByDividingBy:oneHundred 
             withBehavior:numberStyle]; 

firstStepReturn = [fieldOneDN stringValue]; 
textFieldThree.text = firstStepReturn; 
(...) 

Ich mag wäre in der Lage sein firstStepReturn haben zwei Stellen nach dem Komma zu haben, auch wenn sie 00 oder. * 0 . Wenn zum Beispiel 323.390 in das Textfeld "textFieldThree" eingegeben wurde, würde es verarbeitet und in das Textfeld als 3233.90 zurückgegeben. Im Moment wird es als 3233.9 angezeigt.

Jede Hilfe würde sehr geschätzt werden.

Antwort

4

Warum nicht textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];

(oder etwas ähnliches - sorry ich auf einem PC bin jetzt kann dies so nicht testen)

+1

Danke, aber ich versuchte zu vermeiden, einen Schwimmer zu verwenden, weil es ungenau war, wenn große Zahlen verwendet wurden. Hast du noch andere Vorschläge? – Chris

18

NSDecimalNumber Unterklassen NSNumber, so dass Sie nur NSNumberFormatter

verwenden müssen

NSDecimalNumber * dn = [NSDecimalNumber decimalNumberWithString:@"1234.5"]; 
NSNumberFormatter * nf = [[NSNumberFormatter alloc] init]; 
[nf setMinimumFractionDigits:2]; 
[nf setMaximumFractionDigits:2]; 
NSString *ns = [nf stringFromNumber:dn]; 

Simples

+0

gibt es auch Hilfe hier http://stackoverflow.com/questions/810161/nsnumberformatter-only-rounds-to-3-decimal-places – Andiih