double数字转换精度丢失,有最大值上限

第一次做付款方面的接口,不懂规范,遇到了一个double转换精度丢失问题,代码如下

这是有问题的总金额计算的方式

 

 

 

 这个代码出现两个问题:一个是total(int)大小有上限

 

第二个是:金额转换精度问题(涉及隐私代码大部分打码)

 

 

 

 字符串转double后再乘以100,少了一分钱,51480变成了51479,但是另一笔260.32转换后又没有少,有大佬知道是什么原因吗?什么情况下会少1

下面是修复后的代码

 

 后面查了float和double只能用来做科学计算,BigDecimal可用于商业计算,这样改了以后金额上限问题解决,精度也不会丢失

 

posted @ 2021-09-09 14:42  也曾乘风破浪  阅读(305)  评论(0)    收藏  举报