7

TimeUnit.MILLISECONDS.toDays(ms) を使用してミリ秒の時間量を日に変換していましたが、JavaDoc を読んで、それが基づいていることに気づき、.convert()精度が失われました

指定された単位の指定された期間をこの単位に変換します。細かい粒度から粗い粒度への変換は切り捨てられるため、精度が失われます。たとえば、999 ミリ秒を秒に変換すると、結果は 0 になります。数値的にオーバーフローする引数を使用して粗い粒度から細かい粒度に変換すると、負の場合は Long.MIN_VALUE、正の場合は Long.MAX_VALUE に飽和します。

5 分 (300000ms) が 0 日になりました。当面の解決策はこれを書くことでした

double days= (double)ms/1000*60*60*24;

それはひどいし、不必要だと思いますが、うまくいきます。何かアドバイス?他に使える機能はありますか?

ps: これらの数値を静的変数に入れる必要があると言うのを待っているわけではありません。どのような解決策が適切な解決策になるかを理解しようとしています。前もって感謝します

4

1 に答える 1