BigInteger和BigDecimal都是Java中用来处理大数的类,主要区别在于它们的用途不同。
BigInteger适用于处理大整数,即整数位数大于long类型的最大值9223372036854775807的情况。BigInteger是通过一个int数组来存储的每一个位上的数字,因此可以处理任意长度的整数。
BigDecimal适用于处理大小数,即包含小数部分的数字。和Java中的其他数值类型不同,BigDecimal可以精确地表示任意数量的数字,同时还能处理任意小数位数。
下面是一个完整的示例:
import java.math.BigInteger;
import java.math.BigDecimal;
public class BigIntDecDemo {
public static void main(String[] args) {
// BigInteger示例
BigInteger num1 = new BigInteger("12345678901234567890");
BigInteger num2 = new BigInteger("98765432109876543210");
BigInteger sum = num1.add(num2);
BigInteger diff = num1.subtract(num2);
BigInteger product = num1.multiply(num2);
BigInteger quotient = num1.divide(num2);
System.out.println("Sum: " + sum);
System.out.println("Difference: " + diff);
System.out.println("Product: " + product);
System.out.println("Quotient: " + quotient);
// BigDecimal示例
BigDecimal num3 = new BigDecimal("1234567890.12345678901234567890");
BigDecimal num4 = new BigDecimal("0.000000000098765432109876543210");
BigDecimal sum2 = num3.add(num4);
BigDecimal diff2 = num3.subtract(num4);
BigDecimal product2 = num3.multiply(num4);
BigDecimal quotient2 = num3.divide(num4, 25, BigDecimal.ROUND_HALF_UP); // 除法时需要指定保留小数位数和舍入方式
System.out.println("Sum: " + sum2);
System.out.println("Difference: " + diff2);
System.out.println("Product: " + product2);
System.out.println("Quotient: " + quotient2);
}
}
输出结果为:
Sum: 111111111011111111100
Difference: -86419753208641975320
Product: 1219326311376556301088132477177506015980
Quotient: 0
Sum: 1234567890.1234567891111111111
Difference: 1234567890.1234567890111111111
Product: 0.000123457142129632146771325129020370370795321
Quotient: 12500000000000000000000.0000000000