我可以使用哪种变量类型在Java中保存大量数字(超过30个数字)?


问题内容

我可以在Java中使用很大的变量类型来存储大量数字(最多40位)吗?

long的最大值是9223372036854775807,它是19位数字-不够大。

我正在尝试创建一个可以处理大数的计算器,因为当今大多数时候只能容纳不足的10位左右的数字,并且我想使用大得多的数字进行准确的计算

编辑

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


问题答案:

您可以使用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);

输出:

总和: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()));

输出:

$ 123,234,545.48