C ++中用于大数的类型

时间:2012-07-07 12:07:18

标签: c++

我想计算一个非常大的数组的反转次数,比如200,000英寸,我得到的数字非常大。如此之大,无法存储在int值中。

我得到的答案是-8,353,514,212,虽然对于简单的情况它可以工作,所以我认为问题是我用来存储反转次数的变量的类型。

我也尝试使用long int并且输出相同,但如果我尝试使用double 4.0755e + 009是输出。我不知道问题是什么。

2 个答案:

答案 0 :(得分:3)

  1. 使用无符号数据类型
  2. 使用unsigned long(通常为2 ^ 32-1)或unsigned long long(通常为2 ^ 64-1)
  3. 如需完整参考,请参阅this article

答案 1 :(得分:0)

如果编译器的本机类型不适合保存计算结果,则可以考虑使用bignum库。

快速搜索揭示了这两个:

http://www.ttmath.org/

http://gmplib.org/

我也没有任何经验,但gmp似乎是围绕SO更受欢迎的选择,所以也许这就是你应该先尝试的东西