OGeek|极客世界-中国程序员成长平台

标题: objective-c - 使用 NSNumberFormatter numberFromString 的精度错误 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 16:38
标题: objective-c - 使用 NSNumberFormatter numberFromString 的精度错误

为什么下面的代码会产生“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-推荐答案


我怀疑您在使用浮点精度时遇到了错误。解决这个问题的方法是使用 NSDecimalNumber 而不是 NSNumber。有一篇关于这个的好帖子here .

NSDecimalNumber+ decimalNumberWithString:方法。这足以满足您的目的吗?

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






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4