Это означает, что если вы разделите два положительных числа, вы получите " значение «пол», например 7/3=2.
И если вы разделите одно отрицательное значение на положительное (или наоборот), вы получите значение «потолка»: -7/3 = -2 .
Я ожидаю, что это будет либо минимальное, либо максимальное значение.
- Есть это потому, что «негатив» оценивается после деления?
- Это какое-то наследие по сравнению с C?
< /li>
Должен ли он оставаться совместимым с некоторой транзитивной операцией остатка (оператор %)?
(т.е. (a+(a%b)/b = потолок(a/ b) и (a-(a%b)/b = Floor(a/b) )
Целое деление округляет в сторону 0.
Как уже отмечали многие люди: скорее всего, это происходит из C, который происходит от реализации процессором целочисленного деления.
Здесь описана норма C: https://stackoverflow.com/a/3604984/5190019, а также говорится, что C сделал это таким образом, потому что Фортран тоже сделал.
Связанный вопрос (Почему целочисленные div и mod округляются до нуля?) объясняет, как происходит обычное деление отрицательного числа: деление производится так, как если бы оба числа были положительными, а затем оно преобразуется в эквивалентное отрицательное число.
Изначально это, безусловно, происходит от самого простого способа выполнения целочисленного деления с помощью ЦП (с отрицательными числами с использованием представления «дополнения до двух»).
Подробнее здесь: https://stackoverflow.com/questions/791 ... ds-to-zero