2014-10-09 28 views
0

代碼的下面在java中使用printf顯示兩位小數?

double maxHeight; 
maxHeight = (Math.pow(speed * Math.sin(angle), 2)/2 * gravity); 
System.out.printf("Maximum height: %.2f", (maxHeight)); 

收到錯誤的樣品:

「的方法的printf在類型爲PrintStream(字符串,對象[])是不適用的參數(字符串,雙倍)「

什麼是使用printf方法只打印兩位小數的最簡單的解決方案,或者是否有其他解決方案而不創建decimalFormat?

+1

我沒有得到任何錯誤。你使用的是舊版本的Java嗎? – ajb 2014-10-09 19:39:05

+0

你正在編譯舊版本,比如'javac -target 1.4'嗎?使用已經有printf的JDK,但目標沒有可變參數。檢查源代碼版本。 – 2014-10-09 20:15:17

回答

2

問題是可變參數正在尋找一個或多個Object s,並且您提供了一個原始變量。最簡單的方法可能只是包裝它:

System.out.printf("Maximum height: %.2f", Double.valueOf(maxHeight)); 
+1

當我嘗試它時,它自動複製'double'就好了(使用1.8)。您的解決方法僅適用於1.4及更早版本嗎?或者有沒有需要它的更高版本? – ajb 2014-10-09 19:47:12

+1

@ajb不確定。 'printf'直到1.5才被添加,所以如果它是一個自動裝箱問題,那麼在這之後就不一樣了。 – chrylis 2014-10-09 19:57:26