首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNumberFormatter错误?

NSNumberFormatter错误?
EN

Stack Overflow用户
提问于 2011-09-29 07:43:21
回答 1查看 244关注 0票数 0

当我尝试通过NSNumberFormatter将NSString @"8.8"转换为NSNumber时

代码语言:javascript
复制
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setPositiveFormat:@"###0.##"];

NSNumber *result = [formatter numberFromString:@"8.8"];
NSLog(@"%@", [result stringValue]);
[formatter release];

结果是8.800000000000001

对于任何其他值(即:6.67.79.91.24.7等),记录的结果与传递给numberFromString方法的NSString完全相同。

我使用的是XCode 4.1和4.3模拟器。如果我放入(或不放) setMaximumFractionDigits或/和setPositiveFormat没有区别,结果总是8.800000000000001。这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-29 07:47:50

大多数不是整数的数字不能在浮点变量中准确地表示。有一个以开销为代价处理精确值的类NSDecimalNumber,它主要用于货币计算。

请参阅:WIkipedia

浮点数是有理数,因为它们可以表示为一个整数除以另一个整数。但是,基数决定了可以表示的分数。例如,1/5不能用二进制基精确表示为浮点数,但可以用十进制基数精确表示。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7590926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档