首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在objective c中添加两个双精度值的问题

在objective c中添加两个双精度值的问题
EN

Stack Overflow用户
提问于 2011-09-23 05:17:12
回答 2查看 1.2K关注 0票数 1

我正在为iphone和ipad编写一个应用程序,我的程序需要将两个双精度值相加才能得到一个双精度值。问题是,当其中一个双精度值相当大(例如: 2^100)而另一个很小(如1或2 )时,将这两个双精度值相加的结果是错误的,或者它甚至不执行加法。有没有人知道为什么会这样,有没有办法绕过它。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-09-23 05:22:46

这与obj-c无关。double是存储浮点值的64位数据类型。以十进制表示,一个双精度数可以容纳大约15.955位的精度。但是,您的2^100数字大约有30位十进制数字。因此,如果你尝试向它添加任何大约1千万亿的东西,你会发现加法不起作用,因为这超出了你的数字的精度范围。

为了解决这个问题,您可以使用NSDecimalNumber,它可以容纳多达38位小数位的精度。

票数 6
EN

Stack Overflow用户

发布于 2011-09-23 05:23:56

对于任何处理浮点数的人来说,这是一个很好的读物:

http://en.wikipedia.org/wiki/Floating_point

您所描述的情况是完全正常的,并且是浮点在计算机上工作的自然结果。

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

https://stackoverflow.com/questions/7521616

复制
相关文章

相似问题

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