1

你如何检查给定的输入是字符串还是双精度?我尝试这样做[self.display.text doubleValue],如果这不是有效的双精度,它返回 0,但问题是 0 实际上是实际双精度的有效输入,因此程序不会知道它是默认错误回退还是实际有效输入。

你怎么解决这个问题?

4

3 回答 3

2

-[NSFormatter getObjectValue:forString:range:error:]做你想做的事。

更多细节在这里

于 2012-07-06T15:46:56.913 回答
1

使用strtod( reference ) 以“C”方式执行,因为它为您提供解析的最后一个字符:

NSString *input = @"123.456";
char *endptr;
double value = strtod([input UTF8String], &endptr);
if (*endptr != '\0')
{
    NSLog(@"input is a string");
}
于 2012-07-06T14:48:16.740 回答
1

您可以使用正则表达式和 NSPredicate 来测试它是否是双精度值。

NSPredicate *predicate;
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '^[-+]?[0-9]*\.?[0-9]+$'"];
BOOL result = [predicate evaluateWithObject:@"yourdoublevaluehere"];

您可能需要调整正则表达式,因为我在脑海中写下了它。

于 2012-07-06T15:43:29.827 回答