2012-11-08 107 views
0

我正試圖編寫一個程序,將溫度用華氏溫度表示爲攝氏溫度。用戶輸入一個華氏溫度值,程序輸出攝氏溫度值。用戶應該輸入212作爲程序計算100.0的攝氏溫度值的華氏溫度值,但是當我想要獲得100.0時,我得到0.0作爲攝氏溫度值
華氏溫度到攝氏溫度轉換

我不確定在哪裏問題可能是。操作的順序是否可能?

轉換到攝氏華氏其計算公式爲:C = 5/9 (F - 32)

import acm.program.*; 

public class FahrenheitToCelsius extends ConsoleProgram { 

    public void run() { 
     println("This program converts Fahrenheit to Celsius"); 
     int fah = readInt("Enter Fahrenheit temperature: "); 
     double ft = 5/9; 
     double cel = ft * (fah - 32); 
     println("Celsius equivalent = " + cel); 
    } 
} 

回答

4

5/9是整數除法,所以它會返回一個0即使你將其分配給double
嘗試5.0/9

+0

是的,這是問題所在。謝謝。 –

+0

不客氣! – tzaman

+0

@JessicaM。不要忘記標記這篇文章作爲答案。 –

2
double ft = 5/9 ; 

上面的代碼行不符合您的想法。
因爲59都是整數,所以它進行整數除法。 如果兩個操作數都是整數,則將結果賦值爲double並不重要,您將得到整數數學。

所以ft總是0,所以cel總是0

嘗試

double ft = 5.0/9.0; 
0

當您在兩個整數操作,結果不會轉換爲加倍。它仍然只是int。 要將結果變成雙精度,至少有一個數字應該是雙精度。例如

 double ft = 5.0/9; //double 
     double ft = 5/9.0;//double 
     double ft = 5.0/9.0;//double 

雖然

 double ft = 5/9; //int 0 

請詳細信息請參的Floating Point Operations Specification

+0

感謝您的信息。 –

+0

@JessicaM .:如果您認爲這有幫助,請不要忘記接受答案。 –

相關問題