注:a 、b不能为空,否则会报空指针议异常!!!
/**
* BigDecimal 大小比较
*/
if(a.compareTo(b) == -1){
System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
System.out.println("a小于等于b");
}
/**
* BigDecimal 基础运算
*/
BigDecimal a= new BigDecimal("123");
BigDecimal b= new BigDecimal("456");
//加法
a.add(b);
//减法
a.subtract(b);
//乘法
a.multiply(b);
//除法
a.divide(b);
a.divide(b,6,BigDecimal.ROUND_HALF_DOWN);
/**
* BigDecimal.ROUND_的各种用法
*/
1、保留两位并向上取整
BigDecimal big = new BigDecimal(1.6321231);
System.out.println(big .setScale(2, BigDecimal.ROUND_UP));
//输出: 1.64
2、保留两位并向下取整
BigDecimal sas = new BigDecimal(1.6391231);
System.out.println(sas.setScale(2, BigDecimal.ROUND_DOWN));
//输出: 1.63
3、保留3位小数位后有值(大于零) 则第三位加1
BigDecimal sas = new BigDecimal(1.63201);
System.out.println(sas.setScale(3, BigDecimal.ROUND_CEILING));
//输出:1.633
BigDecimal sas = new BigDecimal(1.6320);
System.out.println(sas.setScale(3, BigDecimal.ROUND_CEILING));
//输出:1.632
4、保留3位小数位后有值(大于零)则直接舍去保留位数后的数字
BigDecimal sas = new BigDecimal(1.63201111);
System.out.println(sas.setScale(3, BigDecimal.ROUND_FLOOR));
//输出: 1.632
BigDecimal sas = new BigDecimal(1.6320);
System.out.println(sas.setScale(3, BigDecimal.ROUND_FLOOR));
//输出: 1.631
5、保留3位小数位、四舍五入
BigDecimal sas = new BigDecimal(1.6325);
System.out.println(sas.setScale(3, BigDecimal.ROUND_HALF_UP));
//输出: 1.633
6、如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同
BigDecimal sas = new BigDecimal(1.6324999999999);
System.out.println(sas.setScale(3,BigDecimal.ROUND_HALF_DOWN));
//输出:1.632
7、银行家舍入法
BigDecimal sas = new BigDecimal(1.634511231231);
System.out.println(sas.setScale(3, BigDecimal.ROUND_HALF_EVEN ));
//输出:1.635
7.1、如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;
7.2、如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。
7.3、注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。如果前一位为奇数,则入位,否则舍去。
8、ROUND_UNNECESSARY
断言请求的操作具有精确的结果,因此不需要舍入。
如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。