NSNumberFormatter无法正常工作

时间:2011-12-10 06:20:04

标签: ios nsnumberformatter

我的代码是:

NSString *price = @"0.29000";
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setUsesSignificantDigits:YES];
[f setMaximumFractionDigits:2];
[f setMinimumFractionDigits:2];

NSNumber * priceNumber = [f numberFromString:price];

[f release];

NSLog(@"priceNumber:%@", priceNumber);

结果是:

priceNumber:0.2899999999999999

这是怎么回事?为什么不0.29?

1 个答案:

答案 0 :(得分:2)

您可以使用NSDecimalNumber类来避免像这样的精度差异。有了它,您可以直接从NSDecimalNumber创建NSString对象,而无需NSNumberFormatter

NSString *price = @"0.29000";
NSDecimalNumber *priceNumber = [NSDecimalNumber decimalNumberWithString:price];
NSLog(@"priceNumber:%@", priceNumber);

但是,如果您要对此NSDecimalNumber进行自定义格式设置,您也可以使用NSNumberFormatter