2

为什么下面的代码产生“numberFromString = 9.390000000000001”而不是“numberFromString = 9.39”?

NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numFormatter setPositiveFormat:@"$##0.00"];
[numFormatter setNegativeFormat:@"-$##0.00"];
NSNumber *nTCA = [numFormatter numberFromString:@"$9.39"];

NSLog(@"numberFromString = %@", nTCA);

我在 OS X 10.6 和 iOS 4.3.3 上得到了上述结果。

纠正此错误的最佳方法是什么?

谢谢

4

1 回答 1

4

我怀疑您由于使用浮点精度而遇到错误。解决此问题的方法是使用NSDecimalNumber而不是NSNumber. 这里有一篇很棒的文章。

NSDecimalNumber+ decimalNumberWithString:方法。这足以满足您的目的吗?

于 2011-06-20T21:24:08.887 回答