1.BigDecimal的作用
a.用于小数的精确计算
b.用来表示很大的小数
package heimaexample;
import java.math.BigDecimal;
public class text162 {
public static void main(String[] args){
//构造方法获取BigDecimal对象
//通过double类型的小数来创建对象
BigDecimal b1 = new BigDecimal(0.01);
BigDecimal b2 = new BigDecimal(0.09);
System.out.println(b1.add(b2));
//细节:
//这种方式有可能是不精确的,所以不建议使用
//通过字符串来创建对象
BigDecimal b3 = new BigDecimal("0.01");
BigDecimal b4 = new BigDecimal("0.09");
System.out.println(b3.add(b4));
//通过静态方法获取对象
BigDecimal b5 = BigDecimal.valueOf(0.01);
System.out.println(b5);
//细节:
//1.如果要表示的数字不大,没有超出double的取值范围,建议使用静态方法
//2.如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法
//3.如果我们传递的是0到10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新new
//只能是整数的10,不能是10.0
BigDecimal b6 = BigDecimal.valueOf(10);
BigDecimal b7 = BigDecimal.valueOf(10);
System.out.println(b6 == b7);//true
}
}
2.BigDecimal的方法
方法名 | 说明 |
public static BigDecimal valueOf(double val) | 获取对象 |
public BigDecimal add(BigDecimal val) | 加法 |
public BigDecimal subtract(BigDecimal val) | 减法 |
public BigDecimal multiply(BigDecimal val) | 乘法 |
public BigDecimal divide(BigDecimal val) | 除法 |
public BigDecimal divide (BigDecimal val,精确几位,输入模式) | 除法 |
UP :远离零方向舍入模式
DOWN :向零方向舍入模式
CEILING :向正无穷方向舍入模式
FLOOR :向负无穷方向舍入模式
HAlF_UP :接近四舍五入模式
package heimaexample;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class text162 {
public static void main(String[] args){
//获取两个BigDecimal对象
BigDecimal b8 = BigDecimal.valueOf(10.0);
BigDecimal b9 = BigDecimal.valueOf(5.0);
//public BigDecimal add(BigDecimal val) 加法
BigDecimal result1 = b8.add(b9);
System.out.println(result1);//15.0
//public BigDecimal subtract(BigDecimal val) 减法
BigDecimal result2 = b8.subtract(b9);
System.out.println(result2);//5.0
//public BigDecimal multiply(BigDecimal val) 乘法
BigDecimal result3 = b8.multiply(b9);
System.out.println(result3);//50.0
//public BigDecimal divide(BigDecimal val) 除法
BigDecimal result4 = b8.divide(b9);
System.out.println(result4);//2
//能除尽的时候用上面的这个
//不能除尽的时候用下面的这个
//public BigDecimal divide (BigDecimal val,精确几位,输入模式) 除法
BigDecimal result5 = b8.divide(b9,2, RoundingMode.HALF_UP);
System.out.println(result5);//2.00
//UP :远离零方向舍入模式
//DOWN :向零方向舍入模式
//CEILING :向正无穷方向舍入模式
//FLOOR :向负无穷方向舍入模式
//HAlF_UP :接近四舍五入模式
}
}