ミリ秒から秒(1500msから1.5s、500msから0.5sなど)を可能な限り正確に変換したい。
Double.parseDouble(500 / 1000 + "." + 500 % 1000);
は最適な方法ではありません。除算演算から剰余を取得する方法を探しているので、単純に剰余を追加できます。
確かにあなただけが必要です:
double seconds = milliseconds / 1000.0;
2つの部分を別々に手動で行う必要はありません-1000.0
(double
リテラルとして)の使用が強制する浮動小数点演算のみが必要です。 (あなたのmilliseconds
値は何らかの形式の整数であると仮定しています。)
通常のdouble
の場合、結果を正確に表すことができない場合があることに注意してください。 100ミリ秒を0.1秒として表す場合は、BigDecimal
の使用を検討してくださいexactly。 (それが物理量であり、そもそも100ミリ秒が正確ではないことを考えると、おそらくdouble
が適切ですが、...)
単純に試してみませんか
System.out.println(1500/1000.0);
System.out.println(500/1000.0);
私もこの問題を抱えていました。どういうわけか私のコードは正確な値を提示しませんでしたが、秒単位の数値を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.