Java

时间:2017-06-02 18:41:06

标签: 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 个答案:

答案 0 :(得分:4)

计算正确。

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

-1.6994427191177073E12

到十进制定点表示法:

-1699442719117.7073

这是因为E12表示E左侧的数字乘以10 12

执行该号码和850.0的添加后,您会得到结果

-1699442718267.7073

通过将小数点一直向左转换为科学记数法,您将获得程序打印的结果。