Пересчет Фаренгейта и Цельсия

У меня есть эта проблема с самого начала 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 ответа

Решение

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

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

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

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

Пытаться

5.0F/9.0F

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

Другие вопросы по тегам