BigDecimal类:
运算的时候,float类型和double类型(浮点类型)会丢失数据,不精确,大部分的时候数据存储和整数类型存储不一致,属于有效位数字不精确
因此Java提供了一个类:BigDecimal
作用:不可变的,任意精度的有符号十进制数,让运算更精确
1. BigDecimal构造方法:
publicBigDecimal(String val)
2. BigDecimal常用的方法:
PublicBigDecimal add(BigDecimal augend)加
Public BigDecimalsubtract(BigDecimal subtrahend)减
PublicBigDecimal multiply(BigDecimal multiplicand)乘
PublicBigDecimal divide(BigDecimal divisor)除
PublicBigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
参数1:BigDecimal divisor表示商
参数2:int scale取的有效数字
参数3:int roundingMode舍入的一种模式
代码:
public class BigDecimalDemo2 {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("0.03");
BigDecimal bd2 = new BigDecimal("0.07") ;
System.out.println("add:"+bd1.add(bd2));
BigDecimal bd3 = new BigDecimal("1.0");
BigDecimal bd4 = new BigDecimal("0.28");
System.out.println("sub:"+bd3.subtract(bd4));
//publicBigDecimal multiply(BigDecimal multiplicand)
BigDecimal bd5 = new BigDecimal("1.301") ;
BigDecimal bd6 = new BigDecimal("100") ;
System.out.println("mul:"+bd5.multiply(bd6));
//publicBigDecimal divide(BigDecimal divisor)
BigDecimal bd7 = new BigDecimal("1.301");
BigDecimal bd8 = new BigDecimal("100");
System.out.println("div:"+bd7.divide(bd8));
System.out.println("divide:"+bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));
System.out.println("divide:"+bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));
}
}
BigInteger类:
BigInteger用来计算超出int范围的数据的运算
常用的构造犯法:
publicBigInteger(String val):以字符串的形式表现一个十进制数据
常用的方法:
publicBigInteger add(BigInteger val):加
publicBigInteger subtract(BigInteger val):
publicBigInteger multiply(BigInteger val):乘
publicBigInteger divide(BigInteger val)
public BigInteger[]divideAndRemainder(BigInteger val):返回的是数组(商和余数)
代码:
public class BigIntegerDemo2 {
public static void main(String[] args) {
//定义两个BigInteger的数据
BigInteger b1 = new BigInteger("128");
BigInteger b2 = new BigInteger("42");
// public BigInteger add(BigInteger val):加
System.out.println("add:"+b1.add(b2));
//publicBigInteger subtract(BigInteger val):减
System.out.println("sub:"+b1.subtract(b2));
//publicBigInteger multiply(BigInteger val):乘
System.out.println("mul:"+b1.multiply(b2));
// public BigInteger divide(BigInteger val)
System.out.println("div:"+b1.divide(b2));
// public BigInteger[]divideAndRemainder(BigInteger val):返回的是数组(商和余数
BigInteger[] bi =b1.divideAndRemainder(b2);
System.out.println("bi[0]:"+bi[0]);
System.out.println("bi[0]:"+bi[1]);
}
}