我可以使用什么变量类型来保存java中的大数字(30多个数字)?

2022-09-02 05:25:47

有没有一个非常大的变量类型,我可以在Java中存储巨大的数字(最多四十位左右)?

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

我正在尝试创建一个可以处理大数字的计算器,因为现在大多数人只能容纳不足的10位左右,并且我想要使用更大幅度的数字进行准确的计算。

编辑

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


答案 1

您可以使用 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,与双倍相比,它非常适合金额计算。

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


答案 2

您可以尝试使用 BigInteger 类进行具有真正大整数的运算。

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


推荐