Что будет возвращено при делении целого числа на целое и возвращении значения в целое число - PullRequest
1 голос
/ 22 июня 2010

Я хочу разделить размер элемента управления на размер формы и хочу получить его минимальное значение.Я думал о том, что будет возвращено, когда я попытаюсь разделить целое число с целым числом и снова сохранить его результат в integer.

Я хочу только минимальное значение.Я попытался использовать Math.Floor, Math.Truncate, но он показывает мне ошибку, которая вызывает между следующим methods is ambigious, потому что компилятор не может понять, какой тип значения будет возвращен после погружения, то есть десятичное или двойное.* Будет ли возвращать мне минимальное значение, если я не буду использовать такую ​​функцию.Я хочу только минимальное значение.

        Nullable<int> PanelCountInSingleRow = null;
        Nullable<int> widthRemainder = null;

        //setting the size of the panel
        CurrentControlSize = PanelView.Size;
        //Calculate no of Panels that can come in a single row.
        PanelCountInSingleRow = Math.Floor(this.Size.Width / CurrentControlSize.Width);

1 Ответ

4 голосов
/ 22 июня 2010

Целочисленное деление округляет до 0. Не совсем то же самое, что брать слово (из-за того, что отрицательные числа округляют «вверх» до 0), но я предполагаю, что ваши размеры в любом случае неотрицательны.Из спецификации C # 4, раздел 7.8.2:

Деление округляет результат до нуля.Таким образом, абсолютное значение результата является наибольшим возможным целым числом, которое меньше или равно абсолютному значению отношения двух операндов.Результат равен нулю или положителен, если два операнда имеют одинаковый знак, и равен нулю или отрицанию, если два операнда имеют противоположные знаки.

(Обратите внимание, что это специально для целочисленного деления.не делайте этого!)

Таким образом, вы можете удалить вызов Math.Floor.

Если вы также хотите получить остаток, вы можете использовать Math.DivRem:

int remainder;
int count = Math.DivRem(Size.Width, CurrentControlSize.Width, out remainder);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...