OK,所以你編輯使用數字鍵盤,這取決於當前地區的文本字段,從而得到一個數字,這是當前區域dependendt的文本表示,太。編輯完成後,您可以閱讀並想要轉換爲數字。
要轉換你可以使用NSNumberFormatter這樣的:(!)
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
您可以設置格式隨你便,設置區域,範圍,格式,小數/分組分隔符,小數位數等。那麼你只需要使用它:
float number = [nf numberFromString: field.text];
而就是這樣!現在,即使文本中包含逗號,也可以使用數字,前提是您允許鍵盤和格式化程序都具有相同的格式,相同的樣式 - 即可能只是讓當前的語言環境在整個地方使用。
編輯
這是一個貨幣格式化,可以字符串和數字之間進行轉換爲貨幣:
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和身體高度也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];
}
現在,以避免產生在每個計算格式,你可以把它的實例變量,因爲你只需要使用一個的轉換。
小數點分隔符取決於當前的語言環境在我的iPhone上,我有一個德語語言環境和一個小數點逗號,在模擬器美國語言環境和點分隔符,所以它似乎工作。在你的設備上選擇的區域設置(或模擬器 - 你沒有說它發生在哪裏)? –
是的,在模擬器上我有美國區域設置,並有一個點作爲分隔符,它的工作原理但在設備上是逗號,它doesn我不知道如何使用逗號作爲小數點分隔符 –