2011-10-18 5 views
1

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

NSNumberFormatterのドキュメントでは、setMaximumFractionDigits:「受信者からの入力として許容される小数点記号の後の最大桁数」が記載されています。

3.141 

私は失敗する@"3.141"の転換を期待していた(とnilを返す):

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

@"3.141"を受け入れ、私に次のような出力を与えた:

だから、私はこのコードをするとき驚きました小数点区切り文字の後に可能な最大桁数を超えているためです。

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

答えて

1

公式ドキュメントには、他の回答がないことやその兆候がないと推測されます。いいえ、NSNumberFormatterは数字の解析時に包括的な検証をサポートしていません。maximumFractionDigitsは数字の書式設定にのみ関係します。これは、sscanf,strtofなどと一致しているようです。

-1

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

+1

これにより、フォーマッタは番号を「拒否」しません。 – millimoose

関連する問題