30

ミリ秒を秒に (たとえば、1500ms を 1.5s に、または 500ms を 0.5s に) できるだけ正確に変換したいと考えています。

Double.parseDouble(500 / 1000 + "." + 500 % 1000);それを行うための最良の方法ではありません。除算演算から剰余を取得する方法を探しているので、単純に剰余を追加できます。

4

3 に答える 3

77

確かにあなたはただ必要です:

double seconds = milliseconds / 1000.0;

2 つの部分を別々に手動で行う必要はありません。浮動小数点演算が必要なだけで、1000.0(doubleリテラルとして) 強制的に使用できます。(あなたのmilliseconds値は何らかの形の整数であると仮定しています。)

doubleの場合と同様に、結果を正確に表現できない場合があることに注意してください。100 ミリ秒を正確にBigDecimal0.1 秒として表現したい場合は、使用を検討してください。(これは物理量であり、そもそも 100ms は正確ではないため、おそらく a が適切ですが...)double

于 2012-12-30T13:00:21.930 に答える
5

なぜあなたは単に試してみませんか

System.out.println(1500/1000.0);
System.out.println(500/1000.0);
于 2012-12-30T13:01:00.540 に答える
3

私もこの問題を抱えていました。どういうわけか私のコードは正確な値を提示しませんでしたが、秒単位で数値を0.0に丸めました(ミリ秒が1秒未満の場合)。私を助けたのは、除算値に小数を追加することです。

double time_seconds = time_milliseconds / 1000.0;   // add the decimal
System.out.println(time_milliseconds);              // Now this should give you the right value.
于 2013-10-08T09:01:43.153 に答える