double精度丢失如何解决
来源:网络收集 点击: 时间:2024-02-20打开Eclipse,新建一个类,在里面输入如下代码:
double a = 1;
double b = 20.2;
double c = 300.02;
double result = a+b+c;
System.out.println(result);
将3个double类型数字进行相加。

点击上方的【运行】按钮,开始运行程序。

结果是【321.219999999999997】,与我们预期的结果:321.22不一样。

这是因为double类型在进行运算时,会有精度的丢失,这时需要使用BigDecimal来处理,代码更新后如下:
double a = 1;
double b = 20.2;
double c = 300.02;
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 = new BigDecimal(Double.toString(b));
BigDecimal c1 = new BigDecimal(Double.toString(c));
double result = (a1.add(b1).add(c1)).doubleValue();
System.out.println(result);

点击上方的【运行】按钮,再次运行程序。

结果与我们预期的结果一样,是321.22,这样就成功的解决了double的精度丢失问题。

1.打开Eclipse,新建一个类,在里面输入如下代码:
double a = 1;
double b = 20.2;
double c = 300.02;
double result = a+b+c;
System.out.println(result);
将3个double类型数字进行相加。
2.点击上方的【运行】按钮,开始运行程序。
3.结果是【321.219999999999997】,与我们预期的结果:321.22不一样。
4.这是因为double类型在进行运算时,会有精度的丢失,这时需要使用BigDecimal来处理,代码更新后如下:
double a = 1;
double b = 20.2;
double c = 300.02;
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 = new BigDecimal(Double.toString(b));
BigDecimal c1 = new BigDecimal(Double.toString(c));
double result = (a1.add(b1).add(c1)).doubleValue();
System.out.println(result);
5.点击上方的【运行】按钮,再次运行程序。
6.结果与我们预期的结果一样,是321.22,这样就成功的解决了double的精度丢失问题。
注意事项tips:对于double类型的丢失问题,在涉及金融计算时,需要尤其注意或者不使用。
非常感谢您的阅读,希望本篇经验能帮到您,欢迎关注、点赞、投票、转发、收藏~
JAVA版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_88880.html