Java 相异双精度的减法得到0.0
我试图减去两个小的双倍,这两个都是通过使用系统时间得到的,如下所示:Java 相异双精度的减法得到0.0,java,android,Java,Android,我试图减去两个小的双倍,这两个都是通过使用系统时间得到的,如下所示: start = System.currentTimeMillis(); end = System.currentTimeMillis(); 然后我减去两个(end-start),并尝试将该值存储到我制作的double[]data数组中。出于某种原因,结果不是双精度的,而是继续输出0.0 我初始化了数据数组,如下所示: private double[] data = new double[maxTaps+1]; 其中,Max
start = System.currentTimeMillis();
end = System.currentTimeMillis();
然后我减去两个(end-start
),并尝试将该值存储到我制作的double[]data
数组中。出于某种原因,结果不是双精度的,而是继续输出0.0
我初始化了数据数组,如下所示:
private double[] data = new double[maxTaps+1];
其中,MaxTaps
是一个常数
我正在使用textView在屏幕上输出我前进时的值。出于某种原因,当我打印(end-start
)时,它会给我一个非零的双精度。但是如果我把这个双精度(end-start
)放到我的数据数组中,并尝试从数据数组中打印这个双精度,结果是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-1]
处的数据是您要查找的值。假设taps为0,那么您可以设置第一个元素-data[0]=15.0
。然后taps++
现在taps是1,您将实际打印数据[1]
,该数据未设置为显示0,因此,您不认为data[]
的定义可能与问题有任何关联吗?不是双精度,而是继续输出0.0,即双精度;)需要更多的背景。可能是您在设置值后增加了taps
,因此data[taps]
应该是0@MikeNakis在本例中,我就是这样定义数据[]。很抱歉,我的问题中没有包括这一点。私有双精度[]数据=新双精度[maxTaps+1]@卢卡斯:我想我不明白你在说什么。设置值后,我将增加轻敲次数。您可以在我附加到问题的代码中看到这种情况。我想在索引0(第一次点击)处获取(结束-开始)时间,然后继续增加点击以不断更新数据[]是的,在根据您的评论更改了一些内容之后,我只需确保如果点击为0,我不会调用它,以避免出现空错误。非常感谢。