为什么以下代码产生“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/