import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
function();
function_1();
/*
* 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.4999999999999
* System.out.println(1.301 / 100); //0.013009999999999999
//计算结果,原因是二进制中,表示浮点数不精确造成
//超级大型的浮点数据,提供高精度运算,BigDecimal
/*
* BigDecimal — + *运算
*/
}
public static void function() {
BigDecimal b1=new BigDecimal(“0.09”);
BigDecimal b2=new BigDecimal(“0.01”);
//计算b1+b2的和,调用方法add
BigDecimal bigAdd=b1.add(b2);
System.out.println(bigAdd);//0.10
//计算b3-b4的差,调用方法subtract
BigDecimal b3=new BigDecimal("1");
BigDecimal b4=new BigDecimal("0.32");
BigDecimal bigSub=b3.subtract(b4);
System.out.println(bigSub);//0.68
//计算b5*b6的差,调用方法multiply
BigDecimal b5=new BigDecimal("1.015");
BigDecimal b6=new BigDecimal("100");
BigDecimal bigMul=b5.multiply(b6);
System.out.println(bigMul);//101.500
}
public static void function_1() {
BigDecimal b1=new BigDecimal(“1.301”);
BigDecimal b2=new BigDecimal(“100”);
//计算b1/b2的商,调用方法divied
//divide(BigDecimal divisor ,int scale,int roundingmode)
//int scale 保留几位小数
//int roundingmode 保留模式
//static int ROUND_DOWN 直接舍去规定位位之后 static int ROUND_UP 直接加一
//static int ROUND_HALF_UP 四舍五入 static int ROUND_HALF_DOWN
BigDecimal Div=b1.divide(b2,2,BigDecimal.ROUND_DOWN);
System.out.println(Div);//0.01
}
}