2014-11-24 48 views
-2

我試圖讓Celsius採取華氏溫度作爲參數,然後在Celsius函數返回攝氏溫度方法保持返回0

class Exercise1 
{ 
    static void Main(string[] args) 
    { 
     double fahrenheit; 
     Console.WriteLine("Enter farenheit: "); 
     fahrenheit = double.Parse(Console.ReadLine()); 

     double cels; 

     Exercise1 me = new Exercise1(); 
     cels = me.Celsius(fahrenheit); 

     Console.WriteLine(cels); 
    } 

    public double Celsius(double fahrenheit) 
    { 
     double celsius; 
     celsius = 5/9 * (fahrenheit - 32); 
     return celsius; 
    } 
+0

已經有很多類似的問題了。即重複(也談到'小數'問題/解決方案是相同的)。或者,如果你只想'雙' - 閱讀這一個 - http://stackoverflow.com/questions/488942/what-is-the-best-practice-to-make-division-return-double-in-c-sharp – 2014-11-24 00:43:28

回答

2

您的問題是整數除法。這條線

celsius = 5/9 * (fahrenheit - 32); 

將始終爲0,因爲5/9將被劃分爲整數,這將永遠給你0要強制浮點除法,一個如果你的整數必須是雙。所以這樣做:

celsius = 5.0/9 * (fahrenheit - 32); 

注意5.0將強制浮點除法。

0

5/9將被視爲整數,從而使整個計算整數數學在這種情況下。

這意味着你實際上得到了0 * (fahrenheit - 32)

將5和9中的任意一個或兩者都轉換爲雙精度浮點數學。