Чем отличается a // 2 и int(a / 2) в python?
Я писал программу и попробовал 2 метода:
- a // 2 - всё работает хорошо.
- int(a / 2) - почему то возвращает не правильный ответ.
Кто нибудь знает чем эти функции вообще отличаются?
Разница, если 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.
Если переменная a у вас относится к типу int(целое число) , то никакой разницы не будет, в обоих случаях переменная будет относится к типу int. Если переменная a относится к типу float(число с плавающей точкой) , то в случае a//2 оно будет возвращать тип float , а во втором случае вы сами выражению int(a/2) присваиваете тип int
aэто float, тоa//2вернёт тип float, аint(a/2)вернёт тип int – andreymal Aug 04 '20 at 12:38aявляется отрицательным числом, то результат будет различаться – andreymal Aug 04 '20 at 12:43