我可以使用哪种变量类型在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