2011-12-26 5 views
1
long startTime = System.currentTimeMillis(); 
float resultTime= (System.currentTimeMillis() - startTime)/1000; 
System.out.println("Result time : " + resultTime); 

Le résultat est toujours une valeur arrondie comme 1.0 ou 2.0. Comment obtenir un résultat exact comme 1.234?Double valeurs décimales

+0

duplication possible de [précision de division flottante Java] (http://stackoverflow.com/questions/7286681/java-float-division-precision) –

Répondre

4

Vous faites une division entière. (Qui arrondit à un nombre entier)

Moulage à float avant de faire la division:

float resultTime= (float)(System.currentTimeMillis() - startTime)/1000.0f; 
+0

Cela devrait être ... '/ 1000.0f' devrait-il pas? C'est le dénominateur qui détermine la valeur de retour. –

+0

Faire 'System.currentTimeMillis() - startTime/1000.0f' serait probablement moins moche. –

+0

Ah oui, vous avez tous les deux raison. – Mysticial

2

Au lieu de diviser par 1000, diviser par 1000,0. De cette façon, au lieu de faire une division entière, vous faites une division en virgule flottante.

Questions connexes