我是靠谱客的博主 震动芹菜,最近开发中收集的这篇文章主要介绍BigDecimal链式数学计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package ext.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;

public class NumEval<T extends Number> {
    private BigDecimal total;

    private NumEval(T value) {
        total = toBigDecimal(value);
    }

    private BigDecimal toBigDecimal(T value) {
        if (Objects.isNull(value)) {
            return BigDecimal.ZERO;
        }
        return new BigDecimal(value.toString());
    }

    public BigDecimal value() {
        return total;
    }

    public static NumEval init(Number value) {
        return new NumEval(value);
    }

    public NumEval add(T value) {
        if (Objects.nonNull(value)) {
            total = total.add(toBigDecimal(value));
        }
        return this;
    }

    public NumEval subtract(T value) {
        if (Objects.nonNull(value)) {
            total = total.subtract(toBigDecimal(value));
        }
        return this;
    }

    public NumEval multiply(T value) {
        if (Objects.nonNull(value)) {
            total = total.multiply(toBigDecimal(value));
        }
        return this;
    }

    public NumEval divide(T value) {
        return divide(value, 10);
    }

    public NumEval divide(T value, int scale) {
        if (Objects.nonNull(value)) {
            total = total.divide(toBigDecimal(value), scale, RoundingMode.HALF_UP);
        }
        return this;
    }

    public NumEval setScale(int scale) {
        total = total.setScale(scale, RoundingMode.HALF_UP);
        return this;
    }


    public static void main(String[] args) {
        BigDecimal value = NumEval.init(0.35).
                add(3.908).
                add(BigDecimal.valueOf(3.3333)).
                add(Double.valueOf(0.00003)).
                add(Integer.valueOf(1)).
                add(null).
                subtract(2.098).
                multiply(3.4537338474744889).
                divide(0.3, 35).
                divide(0.3333).
                setScale(3).
                value();
        System.out.println(value);
    }
}

最后

以上就是震动芹菜为你收集整理的BigDecimal链式数学计算的全部内容,希望文章能够帮你解决BigDecimal链式数学计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部