【BigInteger】
import java.math.BigInteger;
/*
* 超级大的整数运算
* 超过long的取值范围整数,需要封装成BigInteger类型对象
* 它们的四则运算都是通过方法来实现的
*
*/
public class BigIntegerDemo1 {
public static void main(String[] args) {
function_2();
}
/*
* BigInteger类的构造方法
* 传递字符串,要求数字格式,没有长度限制
*/
public static void function_1(){
BigInteger b = new BigInteger("12345678901234567890123456789");
System.out.println(b);
}
/*
* 四则运算
*
*/
public static void function_2(){
BigInteger b1 = new BigInteger("12345678901234567890123456789");
BigInteger b2 = new BigInteger("12345678901234567890123456789");
//1.加法运算,调用方法add
BigInteger bigadd = b1.add(b2);
System.out.println(bigadd);
//2.减法运算,调用方法subtract
BigInteger bigsub = b1.subtract(b2);
System.out.println(bigsub);
//3.乘法运算,调用方法multiply
BigInteger bigmul = b1.multiply(b2);
System.out.println(bigmul);
//4.除法运算,调用方法divide
BigInteger bigdiv = b1.divide(b2);
System.out.println(bigdiv);
}
}
【BigDecimal类】
import java.math.BigDecimal;
public class BigDecimalDemo1 {
public static void main(String[] args) {
function_2();
// 造成结果原因:计算机二进制中表示浮点数不精确造成的
//System.out.println(0.09 + 0.01); // 0.09999999999999999
//System.out.println(1.0 - 0.32); // 0.6799999999999999
//System.out.println(1.015 * 100); // 101.49999999999999
//System.out.println(1.301 / 100); // 0.013009999999999999
}
/*
* 超大型的浮点数据,提供高精度放入浮点运算 BigDecimal
*
* BigDecimal 实现三则运算 + - *
*
*/
public static void function_1(){
BigDecimal b1 = new BigDecimal("0.09");
BigDecimal b2 = new BigDecimal("0.01");
//1.求和,调用add方法
BigDecimal bigadd = b1.add(b2);
System.out.println(bigadd); // 0.10
BigDecimal b3 = new BigDecimal("1.0");
BigDecimal b4 = new BigDecimal("0.32");
//2.减法,调用subtract方法
BigDecimal bigsub = b3.subtract(b4);
System.out.println(bigsub); // 0.68
BigDecimal b5 = new BigDecimal("1.015");
BigDecimal b6 = new BigDecimal("100");
//3.减法,调用subtract方法
BigDecimal bigmul = b5.multiply(b6);
System.out.println(bigmul); // 101.500
}
/* BigDecimal实现除法运算
* divide(BigDecimal divisor, int scale, int roundingMode)
* int scale: 保留几位小数
* int roundingMode: 保留模式
* static int ROUND_UP 向上+1
* static int ROUND_DOWN 直接舍去
* static int ROUND_HALF_UP >= 0.5 向上+1
* static int ROUND_HALF_DOWN >0.5 向上+1,否则舍去
*/
public static void function_2(){
BigDecimal b1 = new BigDecimal("1.103");
BigDecimal b2 = new BigDecimal("100"); //0.01303
BigDecimal bigdivi = b1.divide(b2,2,BigDecimal.ROUND_UP);
System.out.println(bigdivi);
}
}