为什么以下代码产生“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上获得了以上结果。

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

谢谢

最佳答案

我怀疑您由于使用浮点精度而遇到错误。解决此问题的方法是使用NSDecimalNumber而不是NSNumber。关于此here的文章很不错。
NSDecimalNumber具有 + decimalNumberWithString: 方法。满足您的目的就足够了吗?

关于objective-c - 使用NSNumberFormatter numberFromString的精度错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6416890/

10-11 21:04