Je veux convertir des millisecondes en secondes (par exemple, 1500 ms à 1,5 s ou 500 ms à 0,5 s) avec autant de précision que possible.
Double.parseDouble(500 / 1000 + "." + 500 % 1000);
n'est pas la meilleure façon de le faire: je cherche un moyen d'obtenir le reste d'une opération de division afin que je puisse simplement ajouter le reste.
Vous avez sûrement besoin de:
double seconds = milliseconds / 1000.0;
Il n'est pas nécessaire de faire manuellement les deux parties séparément - vous avez juste besoin d'une arithmétique à virgule flottante, que l'utilisation de 1000.0
(comme un double
littéral) force. (Je suppose que votre valeur milliseconds
est un entier d'une certaine forme.)
Notez que comme d'habitude avec double
, vous ne pourrez peut-être pas représenter exactement le résultat. Pensez à utiliser BigDecimal
si vous voulez représenter 100 ms comme 0,1 seconde exactement. (Étant donné qu'il s'agit d'une quantité physique et que les 100 ms ne seraient pas exacts en premier lieu, un double
est probablement approprié, mais ...)
Pourquoi n'essayez-vous pas simplement
System.out.println(1500/1000.0);
System.out.println(500/1000.0);
J'ai aussi eu ce problème, mon code n'a pas présenté les valeurs exactes mais a arrondi le nombre en secondes à 0,0 (si les millisecondes étaient inférieures à 1 seconde). Ce qui m'a aidé, c'est d'ajouter la décimale à la valeur de division.
double time_seconds = time_milliseconds / 1000.0; // add the decimal
System.out.println(time_milliseconds); // Now this should give you the right value.