你如何检查给定的输入是字符串还是双精度?我尝试这样做[self.display.text doubleValue]
,如果这不是有效的双精度,它返回 0,但问题是 0 实际上是实际双精度的有效输入,因此程序不会知道它是默认错误回退还是实际有效输入。
你怎么解决这个问题?
你如何检查给定的输入是字符串还是双精度?我尝试这样做[self.display.text doubleValue]
,如果这不是有效的双精度,它返回 0,但问题是 0 实际上是实际双精度的有效输入,因此程序不会知道它是默认错误回退还是实际有效输入。
你怎么解决这个问题?
-[NSFormatter getObjectValue:forString:range:error:]
做你想做的事。
更多细节在这里。
使用strtod
( reference ) 以“C”方式执行,因为它为您提供解析的最后一个字符:
NSString *input = @"123.456";
char *endptr;
double value = strtod([input UTF8String], &endptr);
if (*endptr != '\0')
{
NSLog(@"input is a string");
}
您可以使用正则表达式和 NSPredicate 来测试它是否是双精度值。
NSPredicate *predicate;
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '^[-+]?[0-9]*\.?[0-9]+$'"];
BOOL result = [predicate evaluateWithObject:@"yourdoublevaluehere"];
您可能需要调整正则表达式,因为我在脑海中写下了它。