繁体   English   中英

“ isnan”似乎不起作用

[英]“isnan” doesn't seem to work

只是试图捕获非数字输入请阅读许多项目。 尝试了decimalDigitCharacterSet(很难相信以单词“ decimal”开头的内容不包含小数)。 尝试使用可变字符集来添加小数。 一直努力将“ 10.5”和“ 96”包括在内,但仍排除“ abc”。

不管我在textbox1中输入什么内容,以下代码都会产生“ IS a number”

double whatTheHey;

whatTheHey = _textBox1.text.doubleValue;

if isnan(whatTheHey) {
    _textBox2.text = @"NOT a number > ";
}

if (!isnan(whatTheHey)) {
    _textBox2.text = @"IS a number > ";
}

10.5,99,qwerty均产生“ IS数”

只是为了捕获非数字输入,这似乎需要大量工作。

有没有人能清楚地看到工作代码的简单示例来捕获非数字但接受其中带有小数的数字?

NaN字面意思不是 “任何不是数字的东西”。 它是特定值的名称-即在某些不确定的操作(例如零除以零或取负数的平方根)后,一个浮点数可以具有。 有关更多历史记录 ,请参见Wikipedia条目

要实际解析字符串的数字值,您可能需要查看NSNumberFormatter

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *a = [numberFormatter numberFromString:@"10.5"];
NSNumber *b = [numberFormatter numberFromString:@"96"];
NSNumber *c = [numberFormatter numberFromString:@"abc"];
NSLog(@"a: %@, b: %@, c: %@", a, b, c);

产量: a: 10.5, b: 96, c: (null)

满足您特定条件的更简单(如果灵活性较差)的解决方案可能是:

BOOL isNumber(NSString *aString){
  return [aString integerValue] || [aString floatValue];
}

但是,如果您是为iOS(或OS X)编写的,那么您真的应该对NSFormatter感到满意。 它们会让您的生活更加轻松。

尝试这个。 我认为它应该可以满足您的需求:

- (BOOL)isStringNumeric:(NSString *)input {
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    NSNumber *number = [numberFormatter numberFromString:input];
    return (number != nil);
}

检查字符串是否为数字或不使用以下代码。

    NSString *newString = @"11111";
    NSNumberFormatter *nf = [NSNumberFormatter new];
    BOOL isDecimal = [nf numberFromString:newString] != nil;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM