0
点赞
收藏
分享

微信扫一扫

封装BigDecimal的加减乘除方法,保留自定义位小数的工具。

caoxingyu 2022-03-11 阅读 74

首先效果展示:

public static void main(String[] args) {
        String s1="2.560";
        String s2="0.525";
        String add = BigDecimalUtils.add(s1, s2, 2);
        String subtract = BigDecimalUtils.subtract(s1, s2,2);
        String multiply = BigDecimalUtils.multiply(s1, s2,  2);
        String divide = BigDecimalUtils.divide(s1, s2, 2);
        System.out.println(s1+"+"+s2+"="+add);
        System.out.println(s1+"-"+s2+"="+subtract);
        System.out.println(s1+"*"+s2+"="+multiply);
        System.out.println(s1+"/"+s2+"="+divide);
    }

输出结果:
在这里插入图片描述

注意:该工具直接复制粘贴到代码里面即可使用

package com.excel.util;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

/**
 * @author lenovo
 */

public class BigDecimalUtils {


    /**
     * 两数相加保留(Scale)位小数
     * @param s1
     * @param s2
     * @param scale 小数位
     * @return  s1+s2
     */
    public static String add(String s1, String s2, int scale) {
        BigDecimal d1 = new BigDecimal(s1);
        BigDecimal d2 = new BigDecimal(s2);
        BigDecimal result = d1.add(d2);
        result = result.setScale(scale, 4);
        return result.toPlainString();
    }

    /**
     * 两数相减保留(Scale)位小数
     * @param s1
     * @param s2
     * @param scale 小数位
     * @return s1-s2
     */
    public static String subtract(String s1, String s2, int scale) {
        BigDecimal d1 =  new BigDecimal(s1);
        BigDecimal d2 =  new BigDecimal(s2);
        BigDecimal result = d1.subtract(d2);
        result = result.setScale(scale, 4);
        return result.toPlainString();
    }

    /**
     * 两数相乘保留(Scale)位小数
     * @param s1
     * @param s2
     * @param scale 小数位
     * @return s1*s2
     */
    public static String multiply(String s1, String s2, int scale) {
        BigDecimal d1 =  new BigDecimal(s1);
        BigDecimal d2 =  new BigDecimal(s2);
        BigDecimal result = d1.multiply(d2);
        result = result.setScale(scale, 4);
        return result.toPlainString();
    }

    /**
     * 两数相除保留(Scale)位小数
     * @param s1
     * @param s2
     * @param scale 小数位
     * @return s1/s2
     */
    public static String divide(String s1, String s2, int scale) {
        MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
        BigDecimal d1 =  new BigDecimal(s1);
        BigDecimal d2 =  new BigDecimal(s2);
        BigDecimal result = d1.divide(d2, mc);
        result = result.setScale(scale, 4);
        return result.toPlainString();
    }
}

举报

相关推荐

0 条评论