java小数的运算(BigDecimal常用操作)

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

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值