为什么以下代码产生“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上得到了上述结果。
纠正此错误的最佳方法是什么?
由于
答案 0 :(得分:4)
我怀疑您因使用浮点精度而遇到错误。解决此问题的方法是使用NSDecimalNumber
代替NSNumber
。关于这个here的帖子很棒。
NSDecimalNumber
有+ decimalNumberWithString:
方法。那会满足你的目的吗?