1

指定された入力が文字列か double かを確認するにはどうすればよいですか? 私は試してみ[self.display.text doubleValue]ましたが、それが有効な double でない場合は 0 を返しますが、問題は 0 が実際の double の有効な入力であるため、プログラムはそれがデフォルトのエラー フォールバックなのか実際の有効な入力なのかを判断できないことです。

これをどのように回避しますか?

4

3 に答える 3

2

-[NSFormatter getObjectValue:forString:range:error:]あなたが望むことをします。

詳細はこちら

于 2012-07-06T15:46:56.913 に答える
1

正規表現と NSPredicate を使用して、double 値であるかどうかをテストできます。

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

頭のてっぺんから書いたので、正規表現を調整する必要があるかもしれません。

于 2012-07-06T15:43:29.827 に答える
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 に答える