我的代码是:
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?
答案 0 :(得分:2)
您可以使用NSDecimalNumber
类来避免像这样的精度差异。有了它,您可以直接从NSDecimalNumber
创建NSString
对象,而无需NSNumberFormatter
:
NSString *price = @"0.29000";
NSDecimalNumber *priceNumber = [NSDecimalNumber decimalNumberWithString:price];
NSLog(@"priceNumber:%@", priceNumber);
但是,如果您要对此NSDecimalNumber
进行自定义格式设置,您也可以使用NSNumberFormatter
。