2016-04-22 123 views
-1

由於int不如double精確我認爲我需要在將它解析爲方法時進行轉換。但是下面的代碼運行良好。爲什麼?解析不同的數據類型Java

public class MyClass { 

    public static void main(String[] args) { 
     System.out.println(met(3/2)); 
    } 

    static String met(int i){ 
     return "This is what I get " + i; 
    } 

} 
+1

我在這裏沒有看到任何'雙'。 – rgettman

+1

我認爲這是3/2 – ocram

+9

'3/2'不是雙。它是一個'int',其值爲1。然而'3.0/2.0'是一個'double',其值爲'1.5'。 – Gendarme

回答

1

當你做3/2這將不會給你一個雙重結果。整數除法發生並且結果被截斷爲整數。因此不需要演員。爲了獲得雙重結果,需要將其轉換爲double,以便獲得編譯器錯誤以使其翻倍。

試着做met(3d/2),然後你遇到你期待的編譯器錯誤。

+2

@Pillar我upvoted正是基於該評論,因爲我認爲你已經超越了無用的擔心發現重複的問題。 –

+3

@Pillar我沒有找到重複的東西,希望有人儘快去做。謝謝你解釋了你的反對票,至少與其他許多人不同。最後一件事,你不喜歡的東西不是垃圾。 –