views:

511

answers:

2

Hi,

I have the following code

(...)
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;
(...)

I would like to be able to have firstStepReturn have 2 digits following the decimal point even if they are .00 or .*0. For example, if 323.390 was inputted into the textfield "textFieldThree", it would be processed and returned to the textfield as 3233.90. At the moment, it is displaying as 3233.9.

Any help would be greatly appreciated.

+1  A: 

Why not use textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];

(or something similar - sorry I'm on a PC right now so can't test this)

Andiih
Thanks, but I was trying to avoid using a float because it was inaccurate when large numbers were used. Do you have any other suggestions?
Chris
+1  A: 

NSDecimalNumber subclasses NSNumber so you just need to use NSNumberFormatter


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

Simples

Andiih
there is also help here http://stackoverflow.com/questions/810161/nsnumberformatter-only-rounds-to-3-decimal-places
Andiih