2009-12-22 7 views
5

je le code suivantzéros NSDecimalNumber suivants point décimal (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; 
(...) 

Je voudrais être en mesure d'avoir firstStepReturn ont 2 chiffres après la virgule, même si elles sont ou .00. * 0 . Par exemple, si 323.390 était entré dans le champ de texte "textFieldThree", il serait traité et renvoyé au champ de texte sous la forme 3233.90. À l'heure actuelle, il affiche 3233.9.

Toute aide serait grandement appréciée.

Répondre

4

Pourquoi ne pas utiliser textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];

(ou quelque chose de similaire - désolé, je suis sur un PC droit peut désormais pas tester cette)

+1

Merci, mais j'essayais d'éviter d'utiliser un flottant car il était inexact lorsque de grands nombres étaient utilisés. Avez-vous d'autres suggestions? – Chris

18

NSDecimalNumber NSNumber donc sous-classes, vous avez juste besoin d'utiliser NSNumberFormatter


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

Simples

+0

il y a aussi de l'aide ici http://stackoverflow.com/questions/810161/nsnumberformatter-only-rounds-to-3-decimal-places – Andiih

Questions connexes