我正在使用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
。
任何人都可以指导我在这里做错了吗。
答案 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:@"'+'#"];