2

我从一开始就遇到了这个问题,这是为了在华氏温度和摄氏温度之间进行转换。

    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!?";

也许我的行动秩序有问题,但我认为这是真的?感谢帮助。

4

2 回答 2

7

尝试

5.0F/9.0F

否则,您将使用整数算术,其中 5/9为零

于 2010-12-27T10:30:56.860 回答
4

尝试在此处放置另一个演员表以确保,如下所示:

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

很可能 5/9 评估为整数并给出 0。其他选项如下所示:

cel = (5f/9f)*(fahr-32);
于 2010-12-27T10:32:49.287 回答