1

我的代码是:

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?

4

1 回答 1

2

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

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

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

于 2011-12-10T06:33:32.893 回答