在objective-c中乘以大数

时间:2011-02-09 22:06:20

标签: objective-c

我试图在xcode中乘以大整数(也试过加倍)。我使用NSLog来跟踪计算中的错误(简单计算),我注意到当我将变量与大值相乘时(例如我用NSLog查找它们):31536000 * 91 = 2869776000我得到1610612736,这是错误的。我做错了什么?

/ d

3 个答案:

答案 0 :(得分:1)

您为数字使用哪种类型的数据? 如果它是NSInteger,或类似的东西,它接近标准int,所以它有一些限制。

例如,在标准的64位架构上,您可以声明一个long long int,它允许您拥有64位整数。如果乘法需要更多位置,则最左边的位可能会被截断,这会改变您的结果。

你也可以使用一些long double,它允许你处理80位数字,这扩展了双精度,但它仍然在大数字上松散。

答案 1 :(得分:0)

输出结果时,您需要确保使用正确的string format specifier。对于大数字,您可能希望将%lld(或%llx)用于long long%llu(或再次,%llx)用于{{1 }}

您使用什么字符串格式说明符来输出值?

答案 2 :(得分:0)

我尝试使用long longm,它最初似乎不起作用,但是当我在NSLog中使用字符串格式说明符%11u时,我从计算中得到了正确的输出!

非常感谢答案!

/ d