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