我可以用什么变量类型来保存java中的大数(30+位)?

Jon*_*Lam 18 java biginteger bigdecimal

是否有一个非常大的变量类型我可以在Java中用来存储大量数字(最多四十位数)?

long最大值是9223372036854775807,这是19位数 - 不够大.

我正在尝试创建一个可以处理大数字的计算器,因为现在大多数只能保持不到10位左右的数字,而且我希望得到精确计算的数字更大的数字

编辑

谢谢你的回答.我可以BigInteger用于大整数,唯一的限制是计算机的内存(应该足够).对于小数,我将使用float^ e,如@WebDaldo建议,或者BigDecimal(类似于BigInteger),如@kocko建议的那样.

Saj*_*tta 28

您可以使用BigInteger类.

BigInteger bi1 = new BigInteger("637824629384623845238423545642384"); 
BigInteger bi2 = new BigInteger("3039768898793547264523745379249934"); 

BigInteger bigSum = bi1.add(bi2);

BigInteger bigProduct = bi1.multiply(bi2);

System.out.println("Sum : " + bigSum);
System.out.println("Product : " + bigProduct);
Run Code Online (Sandbox Code Playgroud)

输出:

总和:3677593528178171109762168924892318

产品:1938839471287900434078965247064711159607977007048190357000119602656

我应该提一下BigDecimal,与double相比,这对于金额计算来说是非常好的.

BigDecimal bd = new BigDecimal("123234545.4767");
BigDecimal displayVal = bd.setScale(2, RoundingMode.HALF_EVEN);

NumberFormat usdFormat = NumberFormat.getCurrencyInstance(Locale.US);        
System.out.println(usdFormat.format(displayVal.doubleValue()));
Run Code Online (Sandbox Code Playgroud)

输出:

$ 123,234,545.48

  • @Jon它是`(2 ^ 32)^(2 ^ 31-1)`. (3认同)

Kon*_*kov 12

您可以尝试使用BigInteger类进行具有非常大整数的操作.

对于具有浮点数的操作,Java提供了BigDecimal类,它也很有用.