首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS UInt64 number to float错误

iOS UInt64 number to float错误
EN

Stack Overflow用户
提问于 2016-03-13 12:26:29
回答 2查看 260关注 0票数 0
代码语言:javascript
复制
UInt64 intValue = 999999900;
float tt = intValue;
NSLog(@"float tt = %f", tt);

输出结果是"float tt = 999999872",因为你可以看到UInt64转换为float会丢失一些东西,最大浮点数大于999999900,所以我认为可以将值999999900转换为float,所以我的问题是为什么在iOS中会丢失28?

EN

回答 2

Stack Overflow用户

发布于 2016-03-13 12:29:54

float的精确度有限。它不是数字的大小,而是有效位数(在本例中为9)。

使用double而不是float来获得更高的精度。

代码语言:javascript
复制
UInt64 intValue = 999999900;
double tt = intValue;
NSLog(@"double tt = %f", tt);
票数 1
EN

Stack Overflow用户

发布于 2016-03-13 16:56:42

为什么要使用float而不是double?有没有人告诉过你,float的精度非常有限(大约7位),而double的精度大约是15位?

作为一条规则,你永远不应该使用float而不是double,除非你自己能给出一个合理的解释为什么float比double更合适。

所以你的问题是:当我故意丢弃8位数和精度时,为什么我会失去精度,我该怎么办?答案很简单:你失去了精确度,因为你自己扔掉了它。使用double而不是float。

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

https://stackoverflow.com/questions/35966460

复制
相关文章

相似问题

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