Как конвертировать миллисекунды в секунды с точностью
Я хочу конвертировать миллисекунды в секундах (например, 1500 мс до 1,5 с или от 500 мс до 0,5 с) с максимальной точностью.
Double.parseDouble(500 / 1000 + "." + 500 % 1000);
- это не лучший способ сделать это: я ищу способ получить остаток от операции деления, чтобы просто добавить оставшуюся часть.
Ответы
Ответ 1
Конечно, вам просто нужно:
double seconds = milliseconds / 1000.0;
Нет необходимости вручную выполнять две части отдельно - вам просто нужна арифметика с плавающей запятой, которая использует использование 1000.0
(как double
). (Я предполагаю, что ваше значение milliseconds
является целым числом некоторой формы.)
Обратите внимание, что, как обычно, с double
, вы не сможете точно представить результат. Рассмотрите возможность использования BigDecimal
, если вы хотите представить 100 мс ровно 0,1 секунды. (Учитывая, что это физическая величина, и 100 мс не будут точными, в первую очередь, double
, вероятно, подходит, но...)
Ответ 2
Почему бы вам просто не попробовать
System.out.println(1500/1000.0);
System.out.println(500/1000.0);
Ответ 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.