1

を使用して文字列を数値に変換しようとしていますNSNumberFormatter。私のアプリケーションでは、小数点以下が 2 桁を超える入力文字列は有効ではありません。つまり、@"3.1"有効@"3.14"な入力ですが、そうで@"3.141"はありません。

のドキュメントにNSNumberFormatterは、setMaximumFractionDigits:「[s]受信者が入力できる小数点以下の最大桁数を設定する」と書かれています。

だから、私はこのコードに驚いた:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.maximumFractionDigits = 2;
NSNumber *number = [numberFormatter numberFromString:@"3.141"];
NSLog(@"%@", number);

受け入れ@"3.141"て、次の出力が得られました。

3.141

小数点記号の後に許可されている最大桁数を超えているため、 の変換が@"3.141"失敗する (そして が返される) ことを期待していました。nil

明らかに、ここで基本的なことを理解していません。文字列入力の検証の一部としてNSNumberFormatter使用しませんか?maximumFractionDigits

4

2 に答える 2

1

他の回答がないこと、または公式ドキュメントにこれが示されていることから推測すると、いいえ、NSNumberFormatter数値を解析する際の包括的な検証はサポートされておらず、数値maximumFractionDigitsをフォーマットする場合にのみ関連します。sscanfこれは、などと一致しているstrtofようです。

于 2011-10-18T20:15:35.770 に答える
-1

NSNumberFormatter のnumberFromString:メソッドNSNumberは、文字列を正しく解析できる場合は を返し、解析できない場合は nil を返します。

于 2011-10-18T18:30:22.500 に答える