В начале недели была рассмотрена простая задачка, но разные языки программирования реагируют на одни и те же входные данные по-разному. Задачка тут. Задачка была достаточно простая.

Необходимо было сделать целочисленное деление по модулю. как Вы могли заметить в комментариях было решение.

То есть, если целочисленно поделить 31 на 3, те результат будет 10 и остаток 1, неважно какой это язык - паскаль, Си или Python.

Даже опытные программисты могут споткнуться на этой задаче. Разбор.

А теперь переходим к отрицательным числам и то же число -31 введем в разных языках.

На Pythone получим следующий результат.

Даже опытные программисты могут споткнуться на этой задаче. Разбор.

А в Паскале это будет :

Даже опытные программисты могут споткнуться на этой задаче. Разбор.

А теперь разберемся, почему так происходит и в чем разница.

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

А вот если взять отрицательные числа, то тут есть небольшая путаница.

Так с точки зрения математики -31/3 это будет -11 и остаток 2. Если взять и поделить как десятичную дробь, то результат будет -10,3333333.... Получается, что тут отличия в том, что целая часть в одном случае -11, а в другом -10. Это расхождение производителей процессоров pentium привело к тому, что у них в результате расчетов получалось целочисленное деление как -10 и остаток -1. Но вся соль в том, что остаток не может быть отрицательным.

Поэтому правильно будет считать как -10 и(- 1= -3+2) или -11 и 2.

Получается что разработчики Pythona этот нюанс проследили и просто учли это в обработчике программы. Как видим, использование разных языков программирования может сказываться на конечном результате, и поэтому важно знать детали.

Если Вам понравилась публикация, подписывайтесь на сайт, за Ваши лайки чаще показывают Наши публикации.
Для поиска публикаций через поисковые системы, просто вводите слово Вивитроника.
Если есть вопросы или по желания, то пишите, черезОбратную связь