广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    double精度丢失如何解决

    来源:网络收集  点击:  时间:2024-02-20
    【导读】:
    Java是常用的编程语言,里面有很多隐藏的问题点,其中就包括double精度丢失问题,今天小编就教你:double精度丢失如何解决?其中,Mac平台上的操作方式和Windows平台基本一致。工具/原料more设备:个人电脑系统:Windows10Eclipse-4.11.0JDK1.8方法/步骤1/6分步阅读

    打开Eclipse,新建一个类,在里面输入如下代码:

    double a = 1;

    double b = 20.2;

    double c = 300.02;

    double result = a+b+c;

    System.out.println(result);

    将3个double类型数字进行相加。

    2/6

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

    3/6

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

    4/6

    这是因为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

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

    6/6

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

    总结1/1

    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

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 18:52:39  耗时:0.026
    0.026s