用于保存20位整数的c ++或java中的数据类型

时间:2013-12-25 11:52:38

标签: java c++ abstract-data-type

Java或C ++中是否存在可以保存20位或更多整数值的数据类型?长长数据类型只能容纳18位数。

8 个答案:

答案 0 :(得分:12)

Java特定:

您正在寻找BigInteger

  

不可变的任意精度整数。所有操作都表现得好像BigIntegers用二进制补码表示法表示(如Java的原始整数类型)

例如:

  BigInteger bint = new BigInteger("1234567856656569");
  BigInteger bint2 = new BigInteger("1234556567856656569");
  System.out.println(bint2.intValue()-bint.intValue()); //397189120

BigDecimal

答案 1 :(得分:4)

看一下java BigInteger

答案 2 :(得分:3)

java中,您可以使用:

  • BigInteger:对于没有小数值的数字
  • BigDecimal:适用于带小数值的数字

答案 3 :(得分:3)

由Owen Astrachan查看The Large Integer Case Study in C++.pdf。我发现这个文件对于详细介绍和代码实现非常有用。它不使用任何第三方库。我用它来处理大量数字(只要你有足够的内存来存储vector<char>)没有问题。

我已经回答了类似的问题here,在那里我做了更详细的介绍。

答案 4 :(得分:3)

对于C ++,你可以查看Matt McCutchen的Big Integer类,因为Java只使用BigInteger

答案 5 :(得分:2)

Java中的

BigInteger类可以包含这样的数字。

或者,您可以基于两个长数字来实现自己的类。

答案 6 :(得分:1)

对于C ++,请参阅Boost的优秀multiprecision library

答案 7 :(得分:1)

使用BigInt数据类型及其隐式操作

以下是添加

的示例
      BigInteger big1 = new BigInteger("1234567856656567242177779");
      BigInteger big2 = new BigInteger("12345565678566567131275737372777569");
      BigInteger bigSum = big1.add(big2);
      System.out.println(bigSum );