OK。編集が終わったら、それを読んで数字に変換します。
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
あなたは、ロケールを設定します、制限、書式設定、小数/グループ区切り、小数点以下の桁数などとしてセットアップフォーマッタをすることができます(!):あなたはこのようNSNumberFormatterを使用する変換するには
次に使用してください:
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];
}
あなたがそれらの変換のための唯一の1を必要とするので、あなたは、そのインスタンス変数作ることができ、各計算にフォーマッタを作成しないように。そのようEasyer
小数点の区切り記号は現在のロケールによって異なります。私のiPhoneでは、ドイツ語のロケールと小数点のカンマが米国のロケールとドット区切り記号に表示されています。あなたのデバイスで選択されたロケール(またはシミュレータ - あなたはどこで起こったのか言っていませんでしたか?) –
はい、シミュレータ上に私はロケールがあり、セパレータとしてドットがありますが、デバイス上にカンマがあり、 –