Чем отличается a // 2 и int(a / 2) в python?
Чем отличается a // 2 и int(a / 2) в python?
Я писал программу и попробовал 2 метода:
- a // 2 - всё работает хорошо.
- int(a / 2) - почему то возвращает не правильный ответ.
Кто нибудь знает чем эти функции вообще отличаются?
Ответы (2 шт):
Если переменная 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.