3

このコードを使用して UITextField を作成し、下部のラベルに値を出力してフォーマットします。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesGroupingSeparator:NO];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:2];
NSNumber *calcolo = [NSNumber numberWithDouble:[value1 doubleValue]-[self.textfield.text doubleValue]];
formattedString = [formatter stringFromNumber:calcolo];
self.label.text = formattedString;

シミュレーター(US)では、値が正しく表示されます。デバイス (IT) では、キーボードにコンマがありますが、コンマの後の値は常にゼロです。 ここに画像の説明を入力

編集:これは機能します

NSNumber *temporaryValue1 = [formatter numberFromString:[NSString stringWithFormat:@"%@",value1]];
NSNumber *temporaryTextField = [formatter numberFromString:self.textField.text];
NSNumber *calcolo = [NSNumber numberWithFloat:([temporaryValue1 floatValue] - [temporaryTextField floatValue])];
formattedString = [formatter stringFromNumber:calcolo];
4

1 に答える 1

1

問題はあなたの出力ではないと思います。問題は、] から得られる入力です-[NSString doubleValue。このメソッドは、ユーザーのロケールを尊重しません。

self.textField.text作成したフォーマッタを使用して、ロケールを適切に考慮して数値に変換できるはずです。NSDecimalNumberまたは、特にこれが通貨の場合 (そのように見えますか?)、s の使用を検討することもできます。次に、あなたにとっても正しいことをNSDecimalNumberする方法があります。+decimalNumberWithString

于 2013-02-17T13:47:41.503 に答える