为什么下面的代码会产生“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 上得到了上述结果。
纠正此错误的最佳方法是什么?
谢谢
Best Answer-推荐答案 strong>
我怀疑您在使用浮点精度时遇到了错误。解决这个问题的方法是使用 NSDecimalNumber 而不是 NSNumber 。有一篇关于这个的好帖子here .
NSDecimalNumber 有 + decimalNumberWithString: 方法。这足以满足您的目的吗?
关于objective-c - 使用 NSNumberFormatter numberFromString 的精度错误,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/6416890/
|