我对 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。
你应该为你的数字加上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.8
在int
中将被解读为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;