一、BigDecimal常用方法
加法:add
减法:subtract
乘法:multiply
除法:divide
格式化:setScale
BigDecimal.setScale()方法用于格式化小数点 :
setScale(1)表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal类型转换:
转Double类型 : . doubleValue();
转int类型: .intValue();
二、自定义BigDecaimalUtils工具类
package com.hux.bigdecimal;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
/**
* @创建人: hux
* @创建时间: 2020/11/11
* @描述:BigDecimal操作类
*/
@Slf4j
public class BigDecimalUtils {
public static void main(String[] args) {
String a = "2.32";
String b = "3.21";
log.info("加法 :"+a + " + " + b + " = " + add(a, b, 2));
log.info("减法 :"+a + " - " + b + " = " + subract(a, b, 2));
log.info("乘法 :"+a + " * " + b + " = " + multiply(a, b, 2));
log.info("除法 :"+a + " / " + b + " = " + divide(a, b, 2));
}
/**
* 四舍五入求和
*
* @param num1
* @param num2
* @param count 小数位数
* @return
*/
public static BigDecimal add(Object num1, Object num2, int count) {
BigDecimal num_1 = new BigDecimal(num1.toString());
BigDecimal num_2 = new BigDecimal(num2.toString());
return num_1.add(num_2).setScale(count, BigDecimal.ROUND_HALF_UP);
}
/**
* 四舍五入求差
*
* @param num1
* @param num2
* @param count 小数位数
* @return
*/
public static BigDecimal subract(Object num1, Object num2, int count) {
BigDecimal num_1 = new BigDecimal(num1.toString());
BigDecimal num_2 = new BigDecimal(num2.toString());
return num_1.subtract(num_2).setScale(count, BigDecimal.ROUND_HALF_UP);
}
/**
* 四舍五入求积
*
* @param num1
* @param num2
* @param count 小数位数
* @return
*/
public static BigDecimal multiply(Object num1, Object num2, int count) {
BigDecimal num_1 = new BigDecimal(num1.toString());
BigDecimal num_2 = new BigDecimal(num2.toString());
return num_1.multiply(num_2).setScale(count, BigDecimal.ROUND_HALF_UP);
}
/**
* 四舍五入求商
*
* @param num1
* @param num2
* @param count 小数位数
* @return
*/
public static BigDecimal divide(Object num1, Object num2, int count) {
BigDecimal num_1 = new BigDecimal(num1.toString());
BigDecimal num_2 = new BigDecimal(num2.toString());
return num_1.divide(num_2, count, BigDecimal.ROUND_HALF_UP);
}
}