我正在用C#做一些自我教育,虽然我做了比这更复杂的项目,但我无法弄清楚问题是什么。
private void button4_Click(object sender, EventArgs e)
{
int headcount = 0;
int input = Global.inputcount;
for (int i = 0; i < Global.inputcount; i++)
{
if (Global.myTextFile[i] == "F")
{
headcount++;
}
}
float result;
result = headcount/input; <<< that line
button4.Text = result.ToString();
}
这是我的代码,它应该计算
F
在 myTextFile
数组中出现了多少次,并且它应该将该数字除以输入的数量。
我调试了很多次,直到[那]行一切正常。尽管 (headcount = ~2201) 和 (input = ~4321) 结果为 0。
我曾经使用 Pascal,我已经使用 C# 大约 2 个月了,所以如果有人能帮助我,我将不胜感激。
F
在匈牙利语中代表“Fej”=“头”
int / int
执行整数除法always忽略小数部分不管你分配它的类型。
/
运算符(C# 参考)
当你将两个整数相除时,结果总是一个整数。为了 例如,7 / 3 的结果是 2。要获得商作为有理数 数字或分数,给出股息或除数类型浮点数或类型 双。
您可能想改用浮点除法。
result = (float)headcount / input;
或
result = headcount / (float)input;
还要检查 7.7.2 部门操作员 文档。
在进行除法之前,您没有计算人数或输入浮点数。它目前正在进行整数除法,不包括任何余数。人数/输入与 2201/4321 相同,在整数除法中等于 0。通过执行 result = (float)headcount/(float)input 将它们投射到浮点数。
由于您期望
INT
结果并且两个操作数都是 INT
类型,因此您将获得 0
作为输出。您可能希望将其转换为 float
操作
headcount/(input * 1.0);