2014-09-05 2 views
0

Я использую NSNumberFormatter, чтобы сделать NSNumber формуляра NSString. Строки могут быть в формате, как @"-0.19" @"+0.70" @"0.70" @"581.25"NSNumberFormatter Не работает с положительными вводами строк

Я использую следующий код, чтобы сделать NSNumber из этих вышеприведенных строк

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

Я работает в большинстве случаев, но когда вход как @"+0.70" он возвращает nil.

Может кто-нибудь подскажет мне, что я делаю неправильно здесь.

+0

Попробуйте другой стиль номера. – Hokage

+0

Может показаться глупым, но это происходит на устройстве, симуляторе или и то, и другое? – Neeku

ответ

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:@"'+'#"];