Double数据类型精度丢失

在处理金融业务时,发现使用Double计算金额导致精度丢失。为解决此问题,文章介绍了如何利用BigDecimal的valueOf方法将Double转换为高精度的BigDecimal对象,并利用其内置的数值计算方法,如subtract和add,配合指定精度策略(如四舍五入),确保计算精确到小数点后特定位数。注意,不同页面的数据展示差异可能导致结果不同,但这并不一定是由于精度问题引起的。
摘要由CSDN通过智能技术生成

在这行业务逻辑代码中用Double来统计金额

 

展示到页面时发现精度丢失 

 使用BigDecimal封装的方法valueOf 转化为BigDecimal类型数据

BigDecimal中封装了很多数值计算的方法

如num1.subtract(num2,mc)相当于num1-mum2 mc是设置的精度可以调策略 比如四舍五入 可以看底层原码 有很多

num1.add(num2,mc) 相当于num1+num2

 这里回复到小数点后2位

前后我使用的数据页面不同 导致结果不同 不是因为精度丢失导致的差距这么大这个要注意

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值