2016-12-26 105 views
-1

將兩個'int'變量分開並將結果保存爲'double'變量時,小數點右側的任何內容都只是零?開始學習Java'Int'和'Double'

查看下面的三個例子。

預先感謝您,麥克

實施例1 公共MyClass類{

public static void main(String[] args) { 
    int x, y, answer; 
    x = 70; 
    y = 30; 
    answer = x/y; 
    System.out.print(answer); 
} 

}

輸出= 2(I理解的結果,所有的變量定義爲「INT ')

實施例2個 公共MyClass類{

public static void main(String[] args) { 
    int x, y; 
    double answer; 
    x = 70; 
    y = 30; 
    answer = x/y; 
    System.out.print(answer); 
} 

}

輸出= 2.0(我不理解的結果,可變的答案是 '雙' 和我預期2.3333333333333335)

實施例3 公共MyClass類{

public static void main(String[] args) { 
    double x, y, answer; 
    x = 70; 
    y = 30; 
    answer = x/y; 
    System.out.print(answer); 
} 

}

輸出= 2.3333333333333335(I理解的結果,定義爲「雙重」的所有變量)

+0

在所有操作完成之後,它會轉換爲'double',而不是之前。 –

+0

您需要對計算機中整數和浮點之間的差異以及變量類型如何影響對其執行的操作有一個大致的瞭解。一般來說,當你對T的兩個數字執行二進制運算時,結果將是T類型的。如果你希望使用不同的類型進行操作,你必須至少將一個操作數(也可能是兩個)事先給那種類型。 –

回答

0

讓我們仔細看看Java如何在第二段代碼中執行此行:

answer = x/y; 

首先,Java看到一個=運算符,因此它知道這是一個賦值語句。爲了評估一個任務,評估表達式,然後將結果放到左邊的變量中。因此,它首先評估右側。

x/y 

嗯......這可能是那結果呢? xintyint並且您有/運算符。我知道除法運算符可以應用於兩個int操作數,所以讓我得到值xy。啊!這是70/30!由於它是一個整數除以整數,所以結果必須是整數!結果是2!

現在分配變爲:

answer = 2; 

的Java發現右側和左側雙變量的整數,所以將其轉換成2雙,並把它的變量。

+0

你很搞笑,哥們。 – Mordechai

0

分割兩個整數將產生一個整數(這是2在這種情況下)。恰巧你選擇將這個整數存儲在double中,所以它現在表示爲2.0

0

第一個代碼以int形式讀取所有內容並給出一個int。第二個代碼讀取兩個整數,並給出整數的兩倍(例如:10/5 = 2,但double中的2是2.0)。最後,第三個代碼將所有內容讀取爲double,例如70/30(讀爲70.0/30.0)= 2.33 ...

0

例2當計算answer = x/y時,第一個計算x/y和結果是2然後轉換雙精度型2.0