package com.zyp.test.number;
import java.math.BigDecimal;
/**
* @author syl
* @description BigDecimal工具类
* @since 2022/5/30
*/
public class BigDecimalUtils {
/**
* 属性私有
*/
private BigDecimalUtils(){}
/**
* 实例对象
*/
private static BigDecimalUtils bigDecimalUtils;
/**
* 结果
*/
private BigDecimal result;
/**
* 实例对象
*/
private BigDecimal bigDecimal;
/**
* 单例懒汉 双重校验 线程安全
* @return
*/
public static BigDecimalUtils getInstance(){
if (bigDecimalUtils == null) {
synchronized (BigDecimalUtils.class) {
if (bigDecimalUtils == null) {
bigDecimalUtils=new BigDecimalUtils();
}
}
}
return bigDecimalUtils;
}
/**
* 初始化参数
* @param value
* @return
*/
public BigDecimalUtils startOf(double value){
result=new BigDecimal(value+"");
return this;
}
/**
* 加
* @param value
* @return
*/
public BigDecimalUtils add(double value){
bigDecimal=new BigDecimal(value+"");
result=result.add(bigDecimal);
return this;
}
/**
* 减
* @param value
* @return
*/
public BigDecimalUtils subtract(double value){
bigDecimal=new BigDecimal(value+"");
result=result.subtract(bigDecimal);
return this;
}
/**
* 乘
* @param value
* @return
*/
public BigDecimalUtils multiply(double value){
bigDecimal=new BigDecimal(value+"");
result=result.multiply(bigDecimal);
return this;
}
/**
* 除 除不尽默认四舍五入保留2为小数
* @param value
* @return
*/
public BigDecimalUtils divide(double value){
bigDecimal=new BigDecimal(value+"");
result=result.divide(bigDecimal,2,5);
return this;
}
/**
*除
* @param value 参数
* @param scale 小数位
* @param roundingMode 如何取小数
* @return
*/
public BigDecimalUtils divide(double value,int scale,int roundingMode){
bigDecimal=new BigDecimal(value+"");
result=result.divide(bigDecimal,scale,roundingMode);
return this;
}
/**
* 获取结果
* @return
*/
public BigDecimal getResult(){
return result;
}
public static void main(String[] args) {
double a=0.1+0.2;
System.out.println(a);
double v = BigDecimalUtils.getInstance().startOf(0.1).add(0.2).subtract(0.1).
multiply(0.5).divide(0.3).getResult().doubleValue();
System.out.println(v);
}
}
BigDecimal工具类
于 2022-05-30 23:14:39 首次发布