2011-08-22 116 views
6

我想dectect如果一個NSString它是一個浮點數,用於爲例:@「 - 73.041382」檢測是否NSString的是浮點數

但是當我嘗試用這種方法我得到一個錯誤的結果:

-(bool) isNumeric:(NSString*) checkText{ 

NSNumberFormatter* numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
NSNumber* number = [numberFormatter numberFromString:checkText]; 
if (number != nil) { 
    return true; 
} 
return false; 

}

有人有一個想法!?

感謝

+0

你所說的「錯誤的結果」意思? –

+0

我的意思是該方法返回false; – Maxime

+1

可能與語言環境有關。 –

回答

6
-(bool) isNumeric:(NSString*) checkText{ 
    return [[NSScanner scannerWithString:checkText] scanFloat:NULL]; 
} 

我目前無法在Mac,所以我不能檢查它,希望它有助於

+0

是的,它的工作!謝謝! – Maxime

+0

適用於1或1.2或1b但不適用於b1 – naz

+0

不,它並不意味着它是純數字。例如,它可以返回真正的@「3.111fffff」 – Jacky

10

我已經找到了答案:

-(bool) isNumeric:(NSString*) checkText{ 

NSNumberFormatter* numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
//Set the locale to US 
[numberFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]]; 
//Set the number style to Scientific 
[numberFormatter setNumberStyle:NSNumberFormatterScientificStyle]; 
NSNumber* number = [numberFormatter numberFromString:checkText]; 
if (number != nil) { 
    return true; 
} 
return false; 
} 

謝謝!

+0

這將驗證格式爲9.0E-4的偶數,並使9.0E-4xxx無效。這是我發現的唯一解決方案。謝謝! –