BigDecimal类
-
概述
表示无限大的小数类型 -
构造方法
方法 说明 igDecimal(double val) 把小数变成BigDecimal对象 igDecimal(String val) 把字符串变成BigDecimal对象 -
常用方法
方法 说明 BigDecimal add(BigDecimal value) 加法运算 BigDecimal subtract(BigDecimal value) 减法运算 BigDecimal multiply(BigDecimal value) 乘法运算 BigDecimal divide(BigDecimal value) 除法运算 BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 除法运算 int scale:表示整数 int roundingMode表示舍入方式 如:RoundingMode.HALF_UP表示四舍五入
-
示例代码:
public class Demo{
public static void main(String[] args){
//创建对象
//基本类型做浮点数运算精度问题
//小数在底层存储时无法存储一个精确的值
//比如我们写一个0.09在底层可能存储的是一个无限接近0.09的数值
System.out.println(10.0 / 3); //3.3333333333333335
System.out.println(0.09 + 0.01); //0.09999999999999999
//System.out.println(1.2+1.3);
//表示一个无限大的小数并且没有计算错误
BigDecimal b1 = new BigDecimal("0.09");
BigDecimal b2 = new BigDecimal("0.01");
//加法
System.out.println(b1.add(b2));
//减法
System.out.println(b1.subtract(b2));
//乘法
System.out.println(b1.multiply(b2));
//除法
System.out.println(b1.divide(b2));
//--------------------------------------------
//BigDecimal是精确的数值
BigDecimal b3 = new BigDecimal("10.0");
BigDecimal b4 = new BigDecimal("3.0");
//除法
//System.out.println(b3.divide(b4)); //ArithmeticException
//除法运算 保留2位小数 四舍五入
System.out.println(b3.divide(b4,2, RoundingMode.HALF_UP));
}
}