在目标c中添加两个double值的问题

Mil*_*lad 1 c iphone double ipad

我正在为iphone和ipad编写应用程序,我的程序需要添加两个double值才能获得单个double值.问题是当其中一个double值相当大(例如:2 ^ 100)而另一个非常小,如1或2时,添加这两个double值的结果是错误的,或者甚至没有添加.有谁知道为什么会这样,如果有办法解决它.谢谢.

Lil*_*ard 6

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

为了解决这个问题,你可以使用NSDecimalNumber,它最多可以保存38位十进制数字.