簡體   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