使用NSNumberFormatter验证字符串

时间:2011-10-18 18:12:14

标签: cocoa nsnumberformatter

我正在尝试使用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作为验证字符串输入的一部分?

2 个答案:

答案 0 :(得分:1)

通过官方文档中缺少其他答案或任何迹象来猜测:不,NSNumberFormatter在解析数字时不支持全面验证,maximumFractionDigits仅在格式化数字时相关。这似乎与sscanfstrtof等一致。

答案 1 :(得分:-1)

NSNumberFormatter的numberFromString:方法如果可以正确解析字符串,则返回NSNumber,如果不能,则返回nil。