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