使用BigDecimal四舍五入 计算百分比 (%前端拼一个就好了, 后台不拼接百分号)

 

 百分比的计算, 一定要用 实体类或map 一定要用 BigDecimal ,  在不需要乘除运算的 , 可以是double.

 

参考如下链接 介绍了BigDecimal 

 BigDecimal加减乘除计算_haiyinshushe的博客-CSDN博客_bigdecimal加减乘除

实体类, 我们用bigdecimal来接受 来来进行计算    相加 add  相减  subtract   相除divide    相乘multiply

( max1.subtract(min2) ).divide( ).multiply( new BigDecimal("100") );

 ( max1.subtract(min2) )

.divide(  max1.subtract(min1)    , 2, BigDecimal.ROUND_HALF_UP)

.multiply( new BigDecimal("100") );   注意红色部分不需要括号的, 这是 divide自带的一个方法

--数据库是 double(16,2) 或者使用阿里开发手册推荐的 decimal来存储小数, mysql使用double/float会丢失精度, 即便是数据库是 double的, 你在mybatis实体类, 返回值用 BigDecimal来接受并计算比率,很方便

public static void main(String[] args) {
        // 字符串转为四舍五入的BigDecimal
        BigDecimal result = new BigDecimal("1.566666").setScale(2, RoundingMode.HALF_UP);
        System.out.println("字符串转为四舍五入的BigDecimal:" + result);
        BigDecimal num1 = new BigDecimal("12.11111111");
        BigDecimal num2 = new BigDecimal("13.22222222");
        BigDecimal divide = num2.divide(num1, 2, BigDecimal.ROUND_HALF_UP);// 两个BigDecimal数相除结果四舍五入保留2为小数

        java.math.BigDecimal bd1 = new java.math.BigDecimal(0.145444444444444444444);// 0.15
        String s = bd1.setScale(2, java.math.BigDecimal.ROUND_HALF_UP).toPlainString();
        System.out.println(s);

        BigDecimal zero = BigDecimal.ZERO;
        System.out.println(zero);
        BigDecimal bigDecimal = new BigDecimal("100");
        System.out.println(bigDecimal);

        /*BigDecimal在创建的时候可以传入String和double,但是最好使用String,至于原因看看如下代码就知道了:
        BigDecimal b = new BigDecimal("12.000001");
        System.out.println(b);
        BigDecimal c = new BigDecimal(12.01);
        System.out.println(c);
        运行结果为:
        12.000001
        12.0099999999999997868371792719699442386627197265625
        可以看出在传入double的时候精度会丢失。*/
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值