两个数相除[重复]

问题描述 投票:0回答:3

我正在用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”=“头”

c# variables
3个回答
6
投票

int / int
执行整数除法always忽略小数部分不管你分配它的类型。

来自

/
运算符(C# 参考)

当你将两个整数相除时,结果总是一个整数。为了 例如,7 / 3 的结果是 2。要获得商作为有理数 数字或分数,给出股息或除数类型浮点数或类型 双。

您可能想改用浮点除法。

result = (float)headcount / input;

result = headcount / (float)input;

还要检查 7.7.2 部门操作员 文档。


0
投票

在进行除法之前,您没有计算人数或输入浮点数。它目前正在进行整数除法,不包括任何余数。人数/输入与 2201/4321 相同,在整数除法中等于 0。通过执行 result = (float)headcount/(float)input 将它们投射到浮点数。


0
投票

由于您期望

INT
结果并且两个操作数都是
INT
类型,因此您将获得
0
作为输出。您可能希望将其转换为
float
操作

headcount/(input * 1.0);
© www.soinside.com 2019 - 2024. All rights reserved.