Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2023, 20:38   #1
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
Восклицание Операнд вычисления остатка

Цитата:
При использовании оператора % с отрицательными числами ситуация немного
усложняется:

>>> 5 % -3
-1
>>> -5 % 3
1
>>> -5 % -3
-2

Хотя на первый взгляд эти результаты выглядят странно, они объясняются
четкой логикой выполнения оператора в Python. Для вычисления остатка r от
деления числа x на число y в Python используется формула r = x - (y * (x // y)).
Например, чтобы определить результат 5 % -3, Python сначала вычисляет
(5 // -3). Так как результат 5 / -3 равен приблизительно -1.67, это означает,
что 5 // -3 дает -2. Теперь Python умножает это значение на -3, получается 6.
Наконец, Python вычитает 6 из 5 и получает -1.
1) Для вычисления остатка r отделения числа x на число y в Python используется формула r = x - (y * (x // y)).

2) Понятно: Например, чтобы определить результат 5 % -3, Python сначала вычисляет
(5 // -3). Так как результат 5 / -3 равен приблизительно -1.67, это означает,
что 5 // -3 дает -2.

3) Непонятно почему так: Теперь Python умножает это значение на -3, получается 6.

Т.е. непонятно в этой формуле выделенное полужирным: r = x - (y * (x // y))

Хочу действительно понять формулу.
hexor_boo вне форума Ответить с цитированием
Старый 15.02.2023, 20:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Цитата:
Сообщение от hexor_boo Посмотреть сообщение
3) Непонятно почему так: Теперь Python умножает это значение на -3, получается 6.
Вы же дроби в школе проходили? Знаете чему равно 2 * (1/2)? Тут таже логика: x//y - сколько "целых" y в x, вычитая из х это число, умноженное на y, как раз и получается остаток.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив чисел, знак операции и операнд igra17 Общие вопросы по Java, Java SE, Kotlin 1 27.09.2017 05:51
Помогите исправить ошибку (язык C)- error C2106: =: левый операнд должен быть левосторонним значением Tarcom Помощь студентам 1 03.10.2013 02:55
деление без остатка DIMA1605 Общие вопросы Delphi 6 15.01.2013 11:42
что значит первый операнд? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 12.11.2011 16:36
Сложение операнд. rosemary Помощь студентам 7 23.06.2010 17:06