BigDecimal工具类

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);
    }



}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值