У меня есть следующий код
(...)
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", то оно было бы обработано и возвращено к текстовому полю как 3 233,90. В данный момент это отображается как 3 233,9.
Любая справка значительно ценилась бы.
Почему бы не использовать textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatvalue]];
(или что-то подобное - извините, что я сейчас на компьютере, так что не могу это проверить)
.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];
Simple
.