为什么下面的代码会产生“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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |