2012-03-08 6 views
1

Я программирую кредитный калькулятор, и я хочу, чтобы цифры формировались с помощью разделителя (локальных) тысяч, когда пользователь вводит число.NSNumberFormatter Текстовое поле Thousand Separator

Например, 100000 должно стать 100.000 (местное).

Как я могу это сделать в своем примере?

NSNumberFormatter *nf = [[[NSNumberFormatter alloc] init] autorelease]; 
[nf setNumberStyle: NSNumberFormatterDecimalStyle]; 
[nf setRoundingMode: NSNumberFormatterRoundHalfUp]; 
[nf setMaximumFractionDigits: 2]; 

double loanAmount = [[nf numberFromString: tbxLoanAmount.text] floatValue]; 
double intRate = [[nf numberFromString: annualInterestRate.text] floatValue]; 
double NRate = [[nf numberFromString: NInterestRate.text] floatValue]; 
double years = [[nf numberFromString: noOfYears.text] floatValue]; 
double residual = [[nf numberFromString: residualvalue.text] floatValue]; 

Большое спасибо!

D

+0

Не значит '100.000' должен стать' 100000', а не наоборот? Кроме того, по умолчанию не соответствует 'NSNumberFormatter' формат текущей локали? Разве это не так? – yuji

+0

Я думаю, что 100000 должно стать 100 000. – user1258006

+0

Если разделитель тысяч равен '.', то если ваша строка' 100.000', то номер, который вы получаете от него, должен составлять сто тысяч, нет? – yuji

ответ

3

Вы можете попробовать установить следующее в ваш номер форматировщиком:

[nf setGroupingSize:3]; 
[nf setCurrencyGroupingSeparator:@"."]; 

// you should create a string from number 
NSNumber n = [NSNumber numberWithLong: 100000]; 

NSString str = [nf stringFromNumber: n]; 

NSLog(@"My number: %@", str); 
+0

Нет, опять то же самое! Я попробовал это раньше! Я не знаю, где я ошибаюсь! – user1258006

+0

Я только что узнал, что вы не создаете строку из своего номера. Параметры форматирования, такие как группировка валют, используются только в том случае, если вы создаете строку из числа. Или я полностью неправильно понял ваше дело? – GeT

+0

Да, вы правы! – user1258006