Пересчет Фаренгейта и Цельсия - PullRequest
2 голосов
/ 27 декабря 2010

У меня есть проблема с самого начала c точная книга это для преобразования между градусами Фаренгейта и Цельсия.

    private void button1_Click(object sender, EventArgs e)
{
    float fahr, cel;
    if (Celsius.Checked == true)
    {
        fahr = float.Parse(textBox1.Text);
        cel = (5/9)*(fahr-32);
        richTextBox1.Text = "The Degree in Celsius is:" + cel.ToString() + Environment.NewLine + "cool isn't it!?";
    }
    else if (Fahrenheit.Checked == true )
    {
        cel = float.Parse(textBox1.Text);
        fahr = ((9 * cel)/5)+ 32;
        richTextBox1.Text = "The degree in Fahrenheit is:" + fahr.ToString() + Environment.NewLine + "cool is it!?";
    }

, когда я хочу получить Цельсий по Фаренгейту, он продолжает давать мне 0, даже если формула кажется мне верной.что здесь не так?
потому что я думаю, что проблема заключается здесь:

        if (Celsius.Checked == true)
    {
        fahr = float.Parse(textBox1.Text);
        cel = (5/9)*(fahr-32);
        richTextBox1.Text = "The Degree in Celsius is:" + cel.ToString() + Environment.NewLine + "cool isn't it!?";

возможно, у меня что-то не так с Order of Ops, но я думаю, что это правда?спасибо за помощь.

Ответы [ 2 ]

7 голосов
/ 27 декабря 2010

Попробуйте

5.0F/9.0F

В противном случае вы используете целочисленную арифметику, где 5/9 равно нулю.

4 голосов
/ 27 декабря 2010

Попробуйте поставить еще один актерский состав, просто чтобы быть уверенным, вот так:

cel = ((float)5/9)*(fahr-32);

Скорее всего, 5/9 оцениваются как целые и дают 0. Другой вариант будет выглядеть так:

cel = (5f/9f)*(fahr-32);
...