2009-12-22 2 views
5

ho il seguente codicezeri NSDecimalNumber seguenti punto decimale (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; 
(...) 

Mi piacerebbe essere in grado di avere firstStepReturn avere 2 cifre dopo la virgola, anche se sono .00 o. * 0 . Ad esempio, se 323.390 è stato immesso nel campo di testo "textFieldThree", verrà elaborato e restituito al campo di testo come 3233.90. Al momento, viene visualizzato come 3233.9.

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

4

Perché non utilizzare textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];

(o qualcosa di simile - scusate io sono su un PC in questo momento, quindi non posso testare questo)

+1

grazie, ma stavo cercando di evitare l'uso di un galleggiante perché era imprecisi quando sono stati utilizzati grandi numeri. Avete altri suggerimenti? – Chris

18

NSDecimalNumber sottoclassi NSNumber quindi non vi resta che utilizzare NSNumberFormatter


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

Semplici

+0

c'è anche aiuto qui http://stackoverflow.com/questions/810161/nsnumberformatter-only-rounds-to-3-decimal-places – Andiih