Деление двух чисел [дубликат]

На этот вопрос уже есть ответ здесь:

Почему целочисленное деление в C # возвращает целое число, а не число с плавающей точкой? 7 ответов

Я занимаюсь самообразованием в 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 массив, и он должен делить это число на количество входов.

Я отлаживал это много раз, и все хорошо до [той] линии. Результат равен 0, несмотря на то, что (численность = 2201) и (вход = 4321).

Раньше я работал с Pascal, я использую C # около 2 месяцев, так что если кто-нибудь может мне помочь, я был бы благодарен.

F расшифровывается как "Fej" = "Head" на венгерском языке.

 Hans Passant12 июн. 2016 г., 15:18
Это целочисленное деление, используйте result = (float) headcount / input; вместо.
 simongeri9812 июн. 2016 г., 15:21
Большое спасибо! Поэтому я должен сказать IDE, когда я работаю с е. введите a и ожидаете тип b как результат?
 Steve12 июн. 2016 г., 15:26
Здесь так много связанных вопросов, что я удивляюсь, почему ни один из них не появился, пока вы печатали заголовок этого вопроса.
 Olipro12 июн. 2016 г., 15:19
int/int = int - нужно разыграть преданного (headcount) чтобыfloat
 Hari Prasad12 июн. 2016 г., 15:19
проблема целочисленного деления. попробуйте привести кresult = (float)headcount/input;

Ответы на вопрос(3)

Так как вы ожидаетеINT результат и оба операндаINT типа, вы получаете0 в качестве вывода. Вы можете преобразовать это вfloat операция

headcount/(input * 1.0);
 Rahul12 июн. 2016 г., 15:23
@GianPaolo, да, верно. Отредактированный ответ за это.
 Gian Paolo12 июн. 2016 г., 15:22
кажется, что OP хочет получить соотношение между численностью персонала и общим количеством (то есть ожидает получение числа от 0 до 1). Увы, обратите внимание, что в качестве OP вы используете целочисленное деление, теряя все десятичные значения в результате деления

int / int выполняетцелочисленное деление которыйвсегда игнорирует дробную частьнезависимо от того какой тип вы назначаете.

От/ Оператор (C # Reference)

Когда вы делите два целых числа, результатом всегда является целое число. Например, результат 7/3 равен 2. Чтобы получить частное как рациональное число или дробь, укажите тип с плавающей запятой или тип делителя с плавающей запятой или тип double.

Вы можете вместо этого использовать деление с плавающей точкой.

result = (float)headcount / input;

или же

result = headcount / (float)input;

Проверьте7.7.2 Оператор деления документация также.

ыполнением деления. В настоящее время выполняется целочисленное деление, которое не включает остатки. численность персонала / входные данные такие же, как 2201/4321, который будет равен 0 при целочисленном делении. Приведите их к float, выполнив input = (float) headcount / (float).

Ваш ответ на вопрос