1

我正在尝试使用将字符串转换为数字NSNumberFormatter。在我的应用程序中,小数点后超过 2 位的输入字符串无效,即,@"3.1"@"3.14"有效输入,但@"3.141"不是。

的文档NSNumberFormattersetMaximumFractionDigits:“[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仅在格式化数字时相关。这似乎与 withsscanf等一致strtof

于 2011-10-18T20:15:35.770 回答
-1

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

于 2011-10-18T18:30:22.500 回答