首页 > 其他 > 详细

String转double失去精度问题

时间:2020-05-08 15:06:53      阅读:488      评论:0      收藏:0      [点我收藏+]

最近遇到一个坑,微信小程序中退款 19.9的字符串转double变成19.89,导致退不成功 。

坑死我了。现在把更改后的代码贴出来

public static void main(String[] args) {
Double total = Double.parseDouble("19.9");
Double total2 = Double.valueOf("19.9");
//可以看到19.9的字符串使用Double.valueOf转为double是没啥问题的
System.out.println("total======"+total);
System.out.println("tota2======"+total2);
String money = String.valueOf(total * 100);

BigDecimal money2 = BigDecimal.valueOf(total2);
// 将temp乘以100
money2 = money2.multiply(BigDecimal.valueOf(100));
System.out.println("money======"+money);//这是使用转换后的double做了类似乘100这样的算术运算 可以看到发生了精度损失。
System.out.println("money2======"+money2);//这个用BigDecimal没有损失精度
int money3 = money2.intValue();
System.out.println(money3);

}

如下:

技术分享图片

 

 技术分享图片

 

String转double失去精度问题

原文:https://www.cnblogs.com/tomingto/p/12850494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!