有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的浮点计算错误

救命啊,我在用负数加双倍值时遇到了一个问题
显示问题的示例程序:

    double newX = 850.0;
    double delta = -1.6994427191177073E12;
    double total = delta + newX;
    System.out.println("newX:" + newX);
    System.out.println("delta:" + delta);
    System.out.println("total:" + total);

但给定的输出是:

 newX:850.0
 delta:-1.6994427191177073E12
 total:-1.6994427182677073E12

我预计总价值约为“848.30055729”。如何处理这个计算?

当做

丹尼斯


共 (1) 个答案

  1. # 1 楼答案

    计算是正确的

    让我们从转换科学记数法的数字开始

    -1.6994427191177073E12
    

    十进制定点表示法:

    -1699442719117.7073
    

    这是因为E12意味着E左边的数字乘以1012

    一旦你把这个数字和850.0相加,你就会得到结果

    -1699442718267.7073
    

    一旦你把小数点一直移到左边,把它转换成科学记数法,你的程序就会打印出结果