2014-11-24 52 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中的任意一个或两者都转换为双精度浮点数学。