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

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

28da92501944df46f8b03a82f2b6d9ac.png

参考如下链接 介绍了BigDecimal

https://blog.csdn.net/haiyinshushe/article/details/82721234

实体类, 我们用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自带的一个方法

2f885f43ecb89b454ec60211415fc141.png

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

public static void main(String[] args) {

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的时候精度会丢失。*/

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值