2014-09-05 27 views
0

我正在使用NSNumberFormatter使NSNumber的形式NSString。該字符串可以在格式像@"-0.19" @"+0.70" @"0.70" @"581.25"NSNumberFormatter不能使用正輸入字符串

我使用下面的代碼,以使從上述這些字符串

-(double) doubleValueForStocks:(NSString *)str{ 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    NSNumber *num = [formatter numberFromString:str ]; 
} 

我在大多數情況下,但是當輸入像@"+0.70"返回nil工作NSNumber

任何人都可以引導我在這裏做錯了什麼。

+0

嘗試不同的編號樣式。 – Hokage 2014-09-05 13:16:59

+0

可能聽起來很愚蠢,但它會在設備,模擬器還是兩者上發生? – Neeku 2014-09-05 13:45:03

回答

0

我想這樣的檢查本可以幫助你

- (double)stringWithDouble:(NSString *)value { 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setLocale:[NSLocale currentLocale]]; 
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    [numberFormatter setMaximumFractionDigits:2]; 
    NSString *stringWithoutSpaces = [value 
            stringByReplacingOccurrencesOfString:@"+" withString:@""]; 
    NSNumber *num=[numberFormatter numberFromString:stringWithoutSpaces]; 
    return [num doubleValue]; 
} 

輸出

0.700000 



double value=[self stringWithDouble:@"+0.70"]; 
    NSLog(@"%f",value); 
0

嘗試設置positivePrefix爲NSNumberFormatter:

[formatter setPositivePrefix:@"+"]; 

完整的方法:

- (double)doubleValueForStocks:(NSString *)str { 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    [formatter setPositivePrefix:@"+"]; 
    NSNumber *num = [formatter numberFromString:str]; 
    return [num doubleValue]; 
} 
0

setPositivePrefix在前面的回答不會沒有加號的號碼,所以你可以試試這個:

[formatter setPositiveFormat:@"'+'#"];