2014-10-04 85 views
-3

你好,我是一個初學者,我試圖在java中使用printf打印一個小數點後1位的值;但是在轉換時出現錯誤。這是錯誤的行。爲什麼printf導致我的程序崩潰

System.out.printf(" us Ratio = %.1f us/compare \n " , elapsedTime/1000); 
+0

是什麼'elapsedTime'?它是一個浮點數,整數,字符串?你確定它不是'null'嗎?你可以在這個調用之前粘貼異常堆棧跟蹤和一些代碼來演示發生了什麼? – SnakeDoc 2014-10-04 20:59:16

+2

你至少看過錯誤信息嗎?你不認爲它可能包含有用的信息,有助於診斷問題嗎?如果是這樣,你爲什麼不發佈它? – 2014-10-04 21:02:18

回答

1

這個只要改變你的代碼:

System.out.printf(" us Ratio = %.1f us/compare \n ", (float)(elapsedTime/1000)); 

你越來越錯誤,因爲你沒有提供float作爲參數,其中需要。
您必須使用一個表達式,該表達式將隱式轉換爲float或如上所示進行明確轉換。

可以使用double以及這裏

+0

工作非常感謝。 – PedroIt 2014-10-04 21:05:54

+0

當您找到有用或最好的答案時,您可以通過點擊打勾來接受答案。這樣回答者將獲得15個聲望,你將獲得2。 – afzalex 2014-10-04 21:09:03

1

定義elapsedTime爲float

elapsedTime = 1f;

然後它會工作。或者你也可以投的(elapsedTime/ 1000)float

喜歡的東西的結果 - ((float) (elapsedTime/ 1000))

+0

一個hipfire猜測?如果是這樣的話,他也可以投中。 – SnakeDoc 2014-10-04 21:01:12

+0

@SnakeDoc是的.. – Tirath 2014-10-04 21:16:52