Целочисленное деление в Python - PullRequest
6 голосов
/ 26 октября 2011

Я запутался в следующей целочисленной математике в python:

-7/3 = -3 начиная с (-3)*3 = -9 < -7.Я понимаю.

7/-3 = -3 Я не понимаю, как это определяется.(-3)*(-3) = 9 > 7.На мой взгляд, это должно быть -2, потому что (-3)*(-2) = 6 < 7.

Как это работает?

Ответы [ 5 ]

13 голосов
/ 26 октября 2011

Из документации :

Для целочисленного деления (простого или длинного) результатом является целое число. Результат всегда округляется до минус бесконечности : 1/2 равно 0, (-1) / 2 равно -1, 1 / (- 2) равно -1 и (-1) / (- 2) = 0.

Округление до -inf объясняет поведение, которое вы видите.

4 голосов
/ 26 октября 2011

Вот как это работает:

int(x)/int(y) == math.floor(float(x)/float(y))
1 голос
/ 26 октября 2011

Расширяя ответы Экс и Роберта.

Лучший способ думать об этом с точки зрения округления (до минус бесконечности) результата с плавающей запятой:

-7/3 = floor(-2.33) = -3

7/-3 = floor(-2.33) = -3

0 голосов
/ 15 июля 2015

/ используется для деления с плавающей запятой // используется для целочисленного деления (возвращает целое число)

И Python округляет результат до

0 голосов
/ 26 октября 2011

Python округляется.7/3 = 2 (2 + 1/3) -7/3 = -3 (-2 + 1/3)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...