Java或C ++中是否存在可以保存20位或更多整数值的数据类型?长长数据类型只能容纳18位数。
答案 0 :(得分:12)
Java特定:
您正在寻找BigInteger
不可变的任意精度整数。所有操作都表现得好像BigIntegers用二进制补码表示法表示(如Java的原始整数类型)
例如:
BigInteger bint = new BigInteger("1234567856656569");
BigInteger bint2 = new BigInteger("1234556567856656569");
System.out.println(bint2.intValue()-bint.intValue()); //397189120
答案 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)
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 );