华氏度和摄氏度之间的转换问题

时间:2010-12-27 10:29:51

标签: c# temperature unit-conversion

我从一本敏锐的书开始就有这个问题 这适用于华氏温度和摄氏温度之间的转换。

    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!?";
也许我对Ops的命令有些不对,但我认为这是真的吗? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:7)

尝试

5.0F/9.0F

您正在使用整数运算,其中5/9 为零。

答案 1 :(得分:4)

尝试将另一个演员放在那里以确保,就像这样:

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

最有可能5/9作为整数评估并给出0.其他选项将是这样的:

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