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 楼答案
计算是正确的
让我们从转换科学记数法的数字开始
十进制定点表示法:
这是因为
E12
意味着E
左边的数字乘以1012一旦你把这个数字和
850.0
相加,你就会得到结果一旦你把小数点一直移到左边,把它转换成科学记数法,你的程序就会打印出结果