我有一个问题.我正在尝试将Farenheit设为Celcius计算器,当我做数学的一小部分时,它有点不起作用.它是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();
}
Run Code Online (Sandbox Code Playgroud)
我一直使用100作为我的测试号,每次我向文本框发送100,它返回68.它应该在30左右.
目前程序只将分数检测为1.我尝试使用十进制而不是使用double,但这会破坏newTemp问题.我尝试使用float,但得到的结果与double相同.我没有什么特别的想法,但是非常令人沮丧.
如果有人知道如何解决这个问题,我会非常感激.
编辑:Facepalm自从我使用双打以来已经很久了,忘了我需要在每个数字之后都有.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();
}
Run Code Online (Sandbox Code Playgroud)
否则,9将被读取为int因为这是数字的基本C#文字(没有逗号或任何其他后缀D).这就是为什么你总是得到分数的1原因是:9/5 = 1.8将被解读为1在int
或者,你可以这样做:
double fraction = (9D / 5); //the shortest (credit for Coxy)
Run Code Online (Sandbox Code Playgroud)
或者,为了更加可读:
double fraction = (9.0 / 5); //like what we have in math (as pointed out by Michael Burr)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |