NSNumberFormatter不使用正输入字符串

时间:2014-09-05 13:10:00

标签: ios objective-c nsnumber nsnumberformatter

我正在使用NSNumberFormatter制作NSNumber表单NSString。字符串的格式可以是@"-0.19" @"+0.70" @"0.70" @"581.25"

我使用以下代码从上面的字符串中生成NSNumber

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

我在大多数情况下工作,但当输入类似于@"+0.70"时,它会返回nil

任何人都可以指导我在这里做错了吗。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

尝试为NSNumberFormatter设置positivePrefix:

[formatter setPositivePrefix:@"+"];

完整方法:

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

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

答案 2 :(得分:0)

上一个答案中的

setPositivePrefix 对于没有加号的号码不起作用,所以你可以试试这个:

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