ОК, поэтому вы редактируете текстовое поле с помощью цифровой клавиатуры, которая зависит от текущей локали, и, таким образом, получаете текстовое представление числа, которое также зависит от текущей локали. После того как редактирование закончено, вы читаете его и хотите преобразовать в число
Для конвертации вы бы использовали NSNumberFormatter следующим образом:
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
Вы можете настроить форматтер по своему усмотрению, настройку локали (!), Ограничений, форматирования, десятичного разделителя / разделителя на группы, количества десятичных цифр и т. Д. Затем вы просто используете его:
float number = [nf numberFromString: field.text];
И это все! Теперь у вас есть номер, даже если текст содержит запятую, при условии, что вы позволите обоим: клавиатура и форматер иметь одинаковый формат, один и тот же стиль - т.е., возможно, просто позволите использовать текущую локаль повсеместно.
EDIT
это средство форматирования валюты, которое может конвертировать между строкой и числом для валют:
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle: NSNumberFormatterCurrencyStyle];
[nf setRoundingMode: NSNumberFormatterRoundHalfUp];
[nf setMaximumFractionDigits: 2]
это форматирование в процентах с 4 десятичными разрядами:
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle: NSNumberFormatterPercentStyle];
[nf setRoundingMode: NSNumberFormatterRoundHalfUp];
[nf setMaximumFractionDigits: 4];
в текущей локали.
Как видите, вы можете определить стиль, цифры, поведение при округлении и многое другое, в зависимости от чисел, которые вы пытаетесь ввести. Для получения более подробной информации (это действительно много, что вы можете сделать с NSNumberFormatter) вы должны прочитать документы Apple, это выходит за рамки ответа SO, чтобы описать все это.
В вашем случае, при условии, что Paino и Pituus также являются UITextFields:
-(IBAction)calculate {
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setRoundingMode: NSNumberFormatterRoundHalfUp];
[nf setMaximumFractionDigits: 2];
float npaino = [[nf numberFromString: paino.text] floatValue];
float npituus = [[nf numberFromString: pituus.text] floatValue];
float x = npaino] / npituus *10000;
label.text = [nf stringFromNumber: [NSNumber numberWithFloat: x]];
[nf release];
}
Теперь, чтобы избежать создания средства форматирования в каждом вычислении, вы можете сделать его переменной экземпляра, поскольку для этих преобразований вам нужен только один.