2016-06-24 3 views
-1

私はしばらくの間フィットネス器具を使っていました。私たちはカロリーが増えていないが、距離があったこの変わった欠陥を得ていた。だから私は調査した。私はデ・バグを起こし始めました。デュレーションが0、5.0、2.0などの整数で表示されていましたが、この値は2倍でした。以下のコードはモジュールの一部であり、maven経由で.aar依存関係としてインポートします。Javaコンパイラまたはアンドロイドコンパイラがダブルスを切り捨てています...?

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

逆コンパイル、クラスファイル、Iから脱盗聴た:ここ

は、実際のソースコードである

double duration = (double)((System.currentTimeMillis() - this.mPreviousTimestamp)/1000L); 

なぜこれが起こっている、についてどのような考えをし、可能な解決策?他に誰がこれを見たことがありますか?

答えて

0

試行:

Text.setText(String.Formatの( "の値:%の.8f"、a)参照)。

小数点以下は8桁です!

2

(System.currentTimeMillis() - mPreviousTimestamp)/1000 

の結果はintあります。 intintで割った値があります。その結果はintです。次に、割り当てによってintdoubleにキャストしますが、その時点で精度はなくなります。

あなたは計算で(1000.0)ダブル含めることにより、

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

これを行う必要があり、それはまた、式の結果、二重になります。

+0

これは私がやったことです。ルーキーなミスが私のところで...ああ。 –

関連する問題