Подтвердить что ты не робот

Как конвертировать миллисекунды в секунды с точностью

Я хочу конвертировать миллисекунды в секундах (например, 1500 мс до 1,5 с или от 500 мс до 0,5 с) с максимальной точностью.

Double.parseDouble(500 / 1000 + "." + 500 % 1000); - это не лучший способ сделать это: я ищу способ получить остаток от операции деления, чтобы просто добавить оставшуюся часть.

4b9b3361

Ответ 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.