Java 为什么我用Android';什么是爪哇?

Java 为什么我用Android';什么是爪哇?,java,android,double,Java,Android,Double,所以我在做一些非常简单的事情。我有两个实例变量,newX和newY。这两个都是初始化为0.0的双精度 在更新循环期间,我执行以下计算: long now = System.currentTimeMillis(); double elapsed = (now - mNextTime)/1000.0; // convert to seconds Log.i("nx", newX + " + " + elapsed + " = " + (newX + elapsed)); newX = newX +

所以我在做一些非常简单的事情。我有两个实例变量,newX和newY。这两个都是初始化为0.0的双精度

在更新循环期间,我执行以下计算:

long now = System.currentTimeMillis();
double elapsed = (now - mNextTime)/1000.0; // convert to seconds
Log.i("nx", newX + " + " + elapsed + " = " + (newX + elapsed));
newX = newX + elapsed;
newY  = newY + elapsed;
下面是日志语句的一些迭代,这是我无法解释的:

1.3073173811609962E9 + 0.058 = 1.3073173812189963E9
1.3073173812189963E9 + 0.112 = 1.3073173813309963E9
1.3073173813309963E9 + 0.02 = 1.3073173813509963E9
1.3073173813509963E9 + 0.018 = 1.3073173813689961E9
1.3073173813689961E9 + 0.018 = 1.307317381386996E9
1.307317381386996E9 + 0.101 = 1.307317381487996E9

为什么1.307+0.112=1.307??我很困惑。

注意E9。你看到的是非常大的数字

1E9=100000000

所以


1.30733173811609962E9+0.058=1307317381.21899623

java中的浮点数问题?。。。smashing mag在这里写了一篇关于javascript相关问题的文章:同样的问题也适用于java,尽管我不认为这是你的答案。我只是想指出一下,如果这样做会发生什么:
double testNewX=newX+appeased;Log.i(testNewX)