我正在尝试减去两个小 double ,这两个都是我通过使用系统时间得到的,如下所示:
start = System.currentTimeMillis();
end = System.currentTimeMillis();
然后我将两者相减 (end - start
) 并尝试将值存储到我创建的 double[] data
数组中。由于某种原因,结果不是 double ,而是继续输出 0.0
。
我初始化数据数组如下:
private double[] data = new double[maxTaps+1];
其中 MaxTaps
是某个常数
我正在使用 textView 将值输出到屏幕上。出于某种原因,当我打印出 (end - start
) 时,它会给我一个非零的 double。但是,如果我将那个 double (end - start
) 放入我的数据数组并尝试从数据数组打印 double ,结果为 0.0。
例如:我试图获取从按钮改变颜色到它被点击的时间。更改按钮的颜色后,我设置了开始时间。然后当用户点击特定按钮时,使用上述方式记录结束时间,并将两者相减并添加到我的数据数组中。奇怪的部分如下:当我像下面这样输出数据时,结果总是0.0
bottomText.setText("Data point " + Integer.toString(taps) + ": " + String.valueOf(data[taps]));
但是,如果我将 data[taps]
更改为 (end - start
)(如下所示),那么我会得到一个合理的值
bottomText.setText("Data point " + Integer.toString(taps) + ": " + String.valueOf((end - start));
我真的迷路了,因为它们应该是相同的值。
另外,我只是包括了我的一个点击监听器看起来像一个按钮,这可能也很有用
buttonTopLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
if (lit == 1) {
end = System.currentTimeMillis();
data[taps] = (end - start);
taps++;
buttonTopLeft.setBackgroundColor(Color.WHITE);
mHandler.postDelayed(new Runnable() {
public void run(){
doUpdate();
}
}, 1000);
}
}
});
最佳答案
问题很可能是因为您在设置值后增加了 taps,而新的 data[taps]
实际上为零。 data[taps-1]
中的数据就是您所追求的值。假设 taps 为 0,然后设置第一个元素 -data[0]= 15.0
。然后 taps++
现在 taps 是 1,你实际上会打印未设置的 data[1]
所以它显示 0
关于java - 减去不同的 double 结果为 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419111/