Java中实现最大的整数
- Java中存在的问题:在java中的基本整数数据类型long类型最大表示范围为:-263 ~ 263-1,若想要使用更大的数值可使用BigInteger来表达
- 问题的解决:
// 若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述。
BigInteger ba = new BigInteger("1000000");
BigInteger bb = new BigInteger("2000000");
// 实现加法
BigInteger add = ba.add(bb);
System.out.println("add = " + add);
// 实现减法
BigInteger subtract = ba.subtract(bb);
System.out.println("subtract = " + subtract);
// 实现乘法
BigInteger multiply = ba.multiply(bb);
System.out.println("multiply = " + multiply);
// 实现除法
BigInteger divide = bb.divide(ba);
System.out.println("divide = " + divide);
// 实现除法得商与取模得余
BigInteger[] bigIntegers = bb.divideAndRemainder(ba);
String s = Arrays.toString(bigIntegers);
System.out.println("s = " + s);
Java中实现整数的精确运算
double num = 0.1 + 0.2;
System.out.println("num = " + num); // num = 0.30000000000000004
// 解决double运算的误差
BigDecimal na = new BigDecimal("0.1"); // 注 切记使用双引号包裹数值
BigDecimal nb = new BigDecimal("0.2");
// 实现加法
BigDecimal add = na.add(nb);
System.out.println("add = " + add);
// 实现减法
BigDecimal subtract = nb.subtract(na);
System.out.println("subtract = " + subtract);
// 实现乘法
BigDecimal multiply = na.multiply(nb);
System.out.println("multiply = " + multiply);
// 实现除法
BigDecimal divide = na.divide(nb);
System.out.println("divide = " + divide);