Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Objective-C (或C)中浮点数的正确用法和格式

Objective-C (或C)中浮点数的正确用法和格式
EN

Stack Overflow用户
提问于 2009-09-03 18:21:19
回答 3查看 2.8K关注 0票数 3

我有一个iPhone应用程序。我在我的sqlite3数据库中存储了一个浮点值(距离)。(数据库中的字段被格式化为浮点型)我能够在数据库中正确地存储浮点值,没有问题。然而,我似乎想不出如何将值从db格式中提取出来并正确地表示出来。下面是我的代码,用于从我的数据库中提取值并使用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *itemDistance = [NSString stringWithFormat:@"%f",[item distance]];
float questionDistance = [itemDistance floatValue];

项目距离是一个浮点值。我不能让这个起作用。取而代之的是一个非常长的值。我做错了什么?任何帮助都将不胜感激。

提前感谢你的帮助,

L.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-03 19:30:52

假设你的-distance方法返回了正确的值,那么这听起来就像是对C语言中浮点数的工作原理的基本误解。每个开发人员至少落入这种陷阱一次。

浮点数实际上只能表示相当有限数量的值。具体地说,除非您碰巧选择了一个可以精确表示为浮点数的值,否则您将获得最接近的值,该值通常有许多小数位数据。

这样做的原因是因为浮点数只有32位;4个字节。现在,在0..1000000或0..1000或偶数0..1之间有多少个带小数点的数字。无限的。浮点数实现了可能数值的一个非常有限的子集,并且以这样的方式实现,其中得到的可能值可能有许多小数位。

考虑一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf("%5.18f\n", (float) 2.05);
printf("%5.18f\n", (float) 2.45);
printf("%5.18f\n", (float) 4200.75);
printf("%5.18f\n", (float) 37.89);
printf("%5.18f\n", (float) 1.2);
printf("%5.18f\n", (float) -1.2);

这将打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2.049999952316284180
2.450000047683715820
4200.750000000000000000
37.889999389648437500
1.200000047683715820
-1.200000047683715820

这些值与浮点数可以表示的代码位中的值非常接近。

如果您需要更高的精度,请使用double。比这更精确吗?使用NSDecimalNumber。

并且,如果可以的话,使用CoreData。这使得管理这类事情变得更加简单。

票数 4
EN

Stack Overflow用户

发布于 2011-08-09 13:14:13

为什么要绕圈子呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *itemDistance = [NSString stringWithFormat:@"%.2f",[item distance]];
float questionDistance = [itemDistance floatValue];

.2说我想要两位小数。

票数 3
EN

Stack Overflow用户

发布于 2009-09-03 18:46:03

距离的类型是什么?如果它是NSNumber的一个实例,那么我认为你写的代码不会起作用,试试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *itemDistance = [[item distance] stringValue];
float questionDistance = [itemDistance floatValue];

甚至是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
float q=[[item distance] floatValue];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1376926

复制
相关文章
如何使用Go365对Office365用户进行渗透
Go365这款工具旨在帮助广大研究人员针对使用了Office365(现在/即将推出Microsoft365)的组织和用户执行用户枚举和密码爆破攻击。Go365使用了login.microsoftonline.com上的惟一一个SOAP API节点,而login.microsoftonline.com则是很多其他大部分工具都不会选择使用的。当要求输入一个电子邮件地址和密码时,这个终端节点会响应一个Azure AD认证和授权代码,这个代码接下来会交由Go365处理,处理的结果会打印至屏幕或输出到文件。
FB客服
2021/01/08
1.3K0
如何使用Go365对Office365用户进行渗透
Microsoft 365 for Mac(原Office 365)
Microsoft 365 for Mac(原名Office 365)是微软公司推出的一款办公软件套装,它包含了常用的办公应用程序,如Word、Excel、PowerPoint、OneNote等。
Mac小小心
2023/03/13
1K0
Microsoft 365 for Mac(原Office 365)
Microsoft 365 for Mac(原Office 365)
还在寻找office 365 for mac吗?现在小编为大家带来了office 365 for mac,您可以在这里创作、沟通、协作并完成重要工作。
用户10121095
2022/10/30
5120
Python 使用office365邮箱
最近遇到一个需求,需要使用office365邮箱发送邮件,使用SSL发送会失败,必须使用TLS加密协议才能发送成功。
py3study
2020/06/11
1.8K0
如何使用永久白嫖office365_mybatis 注解
①https://download.csdn.net/download/qq_25881443/85337907 ②解压IntelliJ IDEA 2022.1\plugins重启idea
全栈程序员站长
2022/11/08
6850
如何使用永久白嫖office365_mybatis 注解
Microsoft 365 for Mac(原Office 365)
Microsoft 365 for Mac(原Office 365)是Microsoft推出的一款办公软件套件,适用于Mac操作系统。它包含了常见的办公软件,如Word、Excel、PowerPoint等,同时还提供了一些附加功能,例如OneDrive云存储、Outlook邮件客户端、Teams办公协作工具等。
对影三人
2023/03/14
1.7K0
Microsoft 365 for Mac(原Office 365)
原Office365:Microsoft 365 16.71
哪里有office 365 for mac激活工具吗?Microsoft 365 for Mac原Office 365,包含Word、Excel、PowerPoint 和 Outlook应用程序,协作办公的最佳首选。
用户10121095
2023/03/15
1.3K0
Office 365 离线安装
          有个O365 的project需要安装Office365 Office,但是客户机不能连接网络,so要实现离线安装了。之前一直安装都是提示安装错误,类似错误代码Error Code 0-1008 (0),之后发现是没有指定down.xml,Office下载不完整造成了这个错误。
月缺
2020/01/15
2.6K0
Office 365 离线安装
Microsoft Office 365 for Mac
Office 365 Mac版是专为Mac用户定制的Mac电脑办公软件,无论个人还是企业,都可以在这里创作、沟通、协作并完成重要工作。Office 365 Mac版功能非常的全面,你可以使用它帮助你执行各种办公的管理。
快乐的小丸子
2022/11/17
6560
彻底卸载Office 2016 或 Office 365
在某些异常情况下,Office 2016 或 Office 365 可能无法通过添加删除程序进行卸载,各位可以通过以下方法手动卸载。教程来源于微软,遇到类似问题的朋友不妨试试。
reizhi
2022/09/26
5.3K0
office365安装激活
Office Tool Plus 基于 Office 部署工具 (ODT) 打造,可以很轻松地部署 Office。无论你是个体还是团队,Office Tool Plus 都是您的 Office 小助手
王忘杰
2022/09/22
2.4K1
office365安装激活
Windows 商店应用中使用 Office 365 API Tools
本篇我们介绍一个API 工具,用于在 Windows Store App 中使用 Office 365 API。 首先来说一下本文的背景: 使用 SharePoint 做过开发的同学们应该都知道,SharePoint 有一套客户端对象模型(Client Object Model)用于读取和操作列表和文档库的数据。这个模型支持的应用程序类型包括ASP.NET、WPF、Silverlight和WP等,但是 Windows Store App 不在支持行列中(这一点我一直不太理解)。。。这样的话,我们就没办法在
Shao Meng
2018/04/28
3.5K0
Windows 商店应用中使用 Office 365 API Tools
免费获得Office365
Office365开发版E5是为开发人员提供的,是微软的官方活动,申请Office 365开发者计划可以获得为期3个月的免费Office365 E5。而E5计划就包含了25个用于所有Office 365 应用的许可证。
云计算小黑
2022/12/28
2K0
免费获得Office365
office2016、office365和office其它版本JH[通俗易懂]
Win10系统中会预安装Office,但是没有给JH,网上给了各种解决方案,如JH码、KMS等方式JH。
全栈程序员站长
2022/09/09
2.3K0
office2016、office365和office其它版本JH[通俗易懂]
Microsoft Office 365 Pro Plus产品密钥 office365永久激活密钥key分享
有不少用户在寻找office365产品密钥,office365是一种订阅版软件,一般是每个月或每年支付一定的费用在线订阅购买激活码并安装激活。有些用户可以下载到离线版office365,安装后提示要激活的产品,有用户打算使用秘钥破解,下面小编跟大家整理分享office365激活序列号key。
用户9208731
2023/02/24
21K0
Microsoft Office 365 Pro Plus产品密钥 office365永久激活密钥key分享
免费获得Office365Office E5
Office365开发版E5是为开发人员提供的,是微软的官方活动,申请Office 365开发者计划可以获得为期3个月的免费Office365 E5。而E5计划就包含了25个用于所有Office 365 应用的许可证。
星泽V社
2022/04/29
1.8K0
免费获得Office365Office E5
超详细!安装与激活Office 2010 2012 2020 365
Office Tool Plus是一款好用的Office部署软件,可以帮助我们快速部署Microsoft Office软件,本文将使用Office Tool Plus来演示如何安装激活Office 365。
叼同学
2021/08/09
7.4K0
超详细!安装与激活Office 2010 2012 2020 365
办公套件Office365最新中文版,Office365软件安装激活教程下载
Office软件是一款非常实用的办公软件,它包含了多个工具,比如Word、Excel、PowerPoint等等。这些工具可以帮助你处理各种办公任务,提高工作效率。
用户10413399
2023/03/20
1.9K0
办公套件Office365最新中文版,Office365软件安装激活教程下载
微软365与Office 2019相比有什么不同
哪个更有价值:Microsoft 365 或 Office 2019?在这里,它们并排比较,看看哪一个更适合你。
office小助手
2022/04/27
3.4K0
微软365与Office 2019相比有什么不同
点击加载更多

相似问题

对javascript中对象的对象数组进行排序

60

对php中的对象数组进行排序

30

对groovy中的对象数组进行排序

272

对numpy中的对象数组进行排序?

12

对Chrome中的对象数组进行排序

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文