我对 C# 中的这个简单方程感到困惑

本文关键字:方程感 简单 我对 | 更新日期: 2023-09-27 18:32:09

我有问题。我正在尝试制作一个华氏到摄氏度的计算器,当我做数学的分数部分时,它有点不起作用。它要么是 0,要么是 1。

private void toCelcius_Click(object sender, EventArgs e)
{
    double F = double.Parse(temperatureBox.Text);
    double fm32 = F - 32;
    double fraction = (9 / 5);
    double newTemp = fraction*fm32;
    temperatureLabel.Text = newTemp.ToString();
}

我一直使用 100 作为我的测试编号,每次我向文本框发送 100 时,它都会返回 68。它应该在 30 左右。

目前,程序仅将分数感知为 1。我尝试使用十进制而不是使用双精度,但这打破了 newTemp 问题。我尝试使用浮点,但得到了与双精度相同的结果。我不知道发生了什么,但这非常令人沮丧。

如果有人知道如何解决这个问题,我将不胜感激。

编辑:Facepal自从我使用双打以来已经有很长时间了,忘记了我需要在每个数字后都有.0。

我对 C# 中的这个简单方程感到困惑

你应该为你的数字加上double

private void toCelcius_Click(object sender, EventArgs e)
{
    double F = double.Parse(temperatureBox.Text);
    double fm32 = F - 32;
    double fraction = ((double)9 / 5);
    double newTemp = fraction*fm32;
    temperatureLabel.Text = newTemp.ToString();
}

否则,9将被读取为int,因为这是数字的基本 C# 文字(没有逗号或任何其他后缀,如 D)。这就是为什么你总是得到分数作为1,因为:9/5 = 1.8int中将被解读为1

或者,您可以这样做:

double fraction = (9D / 5); //the shortest (credit for Coxy)

或者,为了提高可读性:

double fraction = (9.0 / 5); //like what we have in math (as pointed out by Michael Burr)

或者使用;

Double fraction = 9.0 / 5.0;