java - 减去不同的 double 结果为 0.0

标签 java android

我正在尝试减去两个小 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/

相关文章:

android - 如何连接到设备的 sqlite 数据库

java - 如何搓图?

java - 将 Html.fromHtml 与 android 8 十六进制数字颜色资源一起使用

java - 使用 jcifs 读取文件的最简单方法

java - 备份 Java?

java - 如何使响应式@WebFilter与@RequestBody正常工作?

java - 无法将 2 个视频流合并到一个文件中

android - 前台服务不在 Oreo 中运行