首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNumber floatValue不等于NSNumber值

NSNumber floatValue不等于NSNumber值
EN

Stack Overflow用户
提问于 2010-05-12 05:19:01
回答 1查看 5.1K关注 0票数 3

这里的第一篇文章。NSNumber的floatValue方法有问题--不知怎么的,它返回了一个不精确的数字。问题是:我将一堆NSNumbers存储在数组中,如下所示:

代码语言:javascript
复制
NSArray *a = [NSArray arrayWithObjects:
    [NSNumber numberWithFloat:0.04f],
    [NSNumber numberWithFloat:0.028f], 
    [NSNumber numberWithFloat:0.016f],
    [NSNumber numberWithFloat:0.004f],
   nil];

然后我尝试检索第一个值(例如):NSNumber n= (NSNumber)一个objectAtIndex:0;CGFloat f=n floatValue;

在调试器中,n显示值为0.04 (在摘要列中),而f显示值为0.0399999991。我在这里做错什么了?

谢谢大家。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-12 05:46:44

你没做错什么。这也不是NSNumberCGFloat的具体问题。浮点数字是非常普遍的,它是基于2的幂,而不是10的幂。你应该读这篇权威文章维基百科文章

问题是,标准浮点数只能精确地表示一个1/2,1/4,1/8,.之和的数字。1/10不是。所以你不能完全准确地用标准浮点数来表示0.1。

如果你真的需要处理它,有处理有理数或十进制浮点数的例程。

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

https://stackoverflow.com/questions/2816212

复制
相关文章

相似问题

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