Cómo convertir milisegundos a segundos con precisión
Quiero convertir milisegundos a segundos (por ejemplo 1500ms a 1.5 s, o 500ms a 0.5 s) con la mayor precisión posible.
Double.parseDouble(500 / 1000 + "." + 500 % 1000);
no es la mejor manera de hacerlo: estoy buscando una manera de obtener el resto de una operación de división para que simplemente pueda agregar el resto.
3 answers
Seguramente solo necesitas:
double seconds = milliseconds / 1000.0;
No hay necesidad de hacer manualmente las dos partes por separado - solo necesita aritmética de coma flotante, que el uso de 1000.0
(como double
literal) fuerza. (Estoy asumiendo que su valor milliseconds
es un entero de alguna forma.)
Tenga en cuenta que, como es habitual con double
, es posible que no pueda representar el resultado exactamente. Considere usar BigDecimal
si desea representar 100 ms como 0.1 segundos exactamente. (Dado que es una cantidad física, y los 100ms no sería exacto, en primer lugar, un double
es probablemente apropiado, pero...)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-30 13:00:21
¿Por qué no simplemente intenta
System.out.println(1500/1000.0);
System.out.println(500/1000.0);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-30 13:01:00
También tuve este problema, de alguna manera mi código no presentó los valores exactos, sino que redondeó el número en segundos a 0.0 (si milisegundos estaba por debajo de 1 segundo). Lo que me ayudó fue agregar el decimal al valor de la división.
double time_seconds = time_milliseconds / 1000.0; // add the decimal
System.out.println(time_milliseconds); // Now this should give you the right value.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-08 09:22:32