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

結果は常に1.0または2.0ような丸みを帯びた値です。 1.234のような正確な結果を得るにはどうすればよいですか?二進値

+0

[Javaの浮動小数点精度](http://stackoverflow.com/questions/7286681/java-float-division-precision) –

答えて

4

あなたは整数除算を行っています。あなたが分割を行う前にfloat

キャスト(その整数に切り捨て):

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

これは.../1000.0f'でなければなりませんか?それは戻り値を決定する分母です。 –

+0

'System.currentTimeMillis() - startTime/1000.0f'を実行するのはおそらくあまり醜いでしょう。 –

+0

ああ、あなたはどちらも正しい。 – Mysticial

2

代わり1000.0によって1000分割により分割します。このように、整数除算を行う代わりに浮動小数点除算を行います。