Целочисленное деление и операция по модулю с отрицательными операндами в Python
Возникают вопросы, когда я набираю эти выражения в Python 3.3.0
-10 // 3 # -4
-10 % 3 # 2
10 // -3 # -4
10 % -3 # -2
-10 // -3 # 3
Похоже, что он принимает приблизительное число с плавающей запятой (-3,33)? и округляется в любом случае в целочисленном делении, но в операции по модулю это делает что-то совершенно другое. Кажется, что он возвращает остаток +/- 1 и переключает знак только в зависимости от того, где находится отрицательный операнд. Я совершенно сбит с толку, даже после просмотра других ответов на этом сайте! Я надеюсь, что кто-то может объяснить это мне тоже! Книга говорит намек: вспомните эту волшебную формулу a = (a // b) (b) + (a% b), но это неКажется, я совсем не очищаю воду.
-Заранее спасибо!
Редактировать: Это только мои личные оценки того, что происходит (выше), я знаю,м полностью выключен!