2014-11-24 2 views
-2

Я пытаюсь получить 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

Есть много подобных вопросов. То есть duplicate (также он говорит о 'decimal' проблема/решение такое же). Или если вы хотите просто «дважды» - прочитайте это - http://stackoverflow.com/questions/488942/what-is-the-best-practice-to-make-division-return-double-in-c-sharp –

ответ

2

Ваша проблема целочисленного деления в вашей Celsius функции. Эта линия

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 в двойное, чтобы заставить математику с плавающей запятой.