请我喝caffe了吗 2023-01-28 16:47 采纳率: 0%
浏览 62

Bigdecimal转double会有精度丢失吗?

我想用java计算回归模型的准确率,公式如下:
1 – ( ||实际值 - 预测值|| / ||实际值|| )

代码如下:

        BigDecimal data2 = new BigDecimal("2.11");
        BigDecimal data3 = data1.subtract(data2).abs();
        BigDecimal data4 = data3.divide(data1.abs(), 16, RoundingMode.HALF_UP);
        BigDecimal data5 = new BigDecimal("1.0");
        BigDecimal data6 = data5.subtract(data4);
        System.out.println(data6);
        System.out.println(data6.doubleValue())

但是最后一步Bigdecimal转double,转换前后数值却不同,是丢失精度了吗?
打印输出如下:(最后一位数不同,第一行是Bigdecimal类型,第二行是double类型)

img

请问怎样才能不丢失精度呢?

  • 写回答

3条回答 默认 最新

  • 叫兽-郭老师 Java领域新星创作者 2023-01-28 16:56
    关注

    保留精度的一律用BigDecimal类型。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月28日

悬赏问题

  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Linux权限管理相关操作(求解答)
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?