我正在尝试使用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
作为验证字符串输入的一部分?
答案 0 :(得分:1)
通过官方文档中缺少其他答案或任何迹象来猜测:不,NSNumberFormatter
在解析数字时不支持全面验证,maximumFractionDigits
仅在格式化数字时相关。这似乎与sscanf
,strtof
等一致。
答案 1 :(得分:-1)
NSNumberFormatter的numberFromString:
方法如果可以正确解析字符串,则返回NSNumber
,如果不能,则返回nil。