Чем отличается a // 2 и int(a / 2) в python?

Чем отличается a // 2 и int(a / 2) в python?

Я писал программу и попробовал 2 метода:

  1. a // 2 - всё работает хорошо.
  2. int(a / 2) - почему то возвращает не правильный ответ.

Кто нибудь знает чем эти функции вообще отличаются?


Ответы (2 шт):

Автор решения: shalor1k

Если переменная a у вас относится к типу int(целое число) , то никакой разницы не будет, в обоих случаях переменная будет относится к типу int. Если переменная a относится к типу float(число с плавающей точкой) , то в случае a//2 оно будет возвращать тип float , а во втором случае вы сами выражению int(a/2) присваиваете тип int

→ Ссылка
Автор решения: Алексей Власов

Пример

Разница, если a < 0 и a не кратно 2. Например,

int(-3/2) # -1
-3//2 # -2

Почему?

Первый случай int

-3/2 - это -1.5, переводим в int - -1.

Второй случай //

// - это целая часть от деления с остатком. Что такое деление с остатком? Поделим a на b:
a = bk + q, где q - это остаток: 0 <= q < b

Теперь поделим -3 на 2:
-3 = 2*(-2)+1. Следовательно ответ -2.

→ Ссылка