Java编译器或android编译器正在截断我的双精度。。。?

Java编译器或android编译器正在截断我的双精度。。。?,java,android,Java,Android,所以我正在开发一个健身应用程序,我已经使用了很长时间了。我们有一个奇怪的缺陷,热量没有增加,但距离却增加了。。所以我调查了一下。我开始去监听,看到持续时间是整数,0,5.0,2.0,等等。但这个值是一个双精度值。下面的代码是模块的一部分,我们通过maven将其作为.aar依赖项导入 以下是实际的源代码: double duration = (System.currentTimeMillis() - mPreviousTimestamp) / 1000; 反编译的类文件,我正从中进行调试: do

所以我正在开发一个健身应用程序,我已经使用了很长时间了。我们有一个奇怪的缺陷,热量没有增加,但距离却增加了。。所以我调查了一下。我开始去监听,看到持续时间是整数,0,5.0,2.0,等等。但这个值是一个双精度值。下面的代码是模块的一部分,我们通过maven将其作为.aar依赖项导入

以下是实际的源代码:

double duration = (System.currentTimeMillis() - mPreviousTimestamp) / 1000;
反编译的类文件,我正从中进行调试:

double duration = (double)((System.currentTimeMillis() - this.mPreviousTimestamp) / 1000L);
有什么想法,为什么会发生这种情况,以及可能的解决方案吗?还有谁见过这个吗

试试看:

Text.setText(String.format(“a的值:%.8f”,a))

小数点后8位

(System.currentTimeMillis() - mPreviousTimestamp) / 1000
是一个
int
。将
int
除以
int
。其结果是一个
int
。然后通过赋值将
int
转换为
double
,但此时精度不复存在

你应该这样做

double duration = (System.currentTimeMillis() - mPreviousTimestamp) / 1000.0;

通过在计算中包含double(1000.0),它使表达式的结果也成为double。

是的,这就是我最后要做的。我这方面的新手错误。。。哦,好吧。