NSDecimalNumber нули после десятичной точки (iPhone SDK) - PullRequest
5 голосов
/ 22 декабря 2009

У меня есть следующий код

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

Я бы хотел, чтобы firstStepReturn имел 2 цифры после десятичной точки, даже если они равны .00 или. * 0. Например, если 323.390 было введено в текстовое поле "textFieldThree", оно будет обработано и возвращено в текстовое поле как 3233.90. На данный момент он отображается как 3233,9.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

18 голосов
/ 24 декабря 2009

NSDecimalNumber подклассы NSNumber, поэтому вам просто нужно использовать NSNumberFormatter


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

Simples

4 голосов
/ 22 декабря 2009

Почему бы не использовать textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];

(или что-то подобное - извините, я сейчас на ПК, поэтому не могу это проверить)

...