Откуда берется отрицательное число при вычислении процентов ? - C#

Формулировка задачи:

Дано buff.Length = 98M Shift изменяется от 0 до buff.Length. Вычисляю в процессе работы программы сколько с процентах состовляет текущее значение Shift . При вычислении tempValue следующим образом когда shift равен четверти buff.Length выражение становится отрицательным (tempValue = -21)
                    int BN = buff.Length ;
                    Int64 tempValue = shift * 100 / BN;
Если же изменить код, сразу buff.Length разделить на 100, то отрицательного значения не возникает
                    int BN = buff.Length / 100;
                    Int64 tempValue = shift / BN;
Подскажите, почему так происходит ?

Код к задаче: «Откуда берется отрицательное число при вычислении процентов ? - C#»

textual
                                int BN = buff.Length ;
                    Int64 tempValue = (Int64)shift * 100 / BN;

9   голосов, оценка 3.778 из 5


СОХРАНИТЬ ССЫЛКУ