← Все вопросы
Почему 5 / 2 даёт 2.5, а 5 // 2 даёт 2?
19
Ожидал, что деление целых чисел даст целое, а получил 2.5. И что это за двойной слэш //?
3 ответа
28
✓ Принятый ответ — помог автору
В Python 3 одиночный / — это всегда обычное (вещественное) деление, и результат всегда float, даже если делится нацело: 4 / 2 даёт 2.0, а не 2.
Двойной // — это целочисленное деление (округление вниз, к меньшему): 5 // 2 → 2, 7 // 3 → 2. Если нужен остаток — оператор %: 5 % 2 → 1.
Кстати, для отрицательных // округляет именно вниз: -5 // 2 → -3, а не -2.
Сергей Малишевский В Python 2 / для целых давал целое, отсюда путаница в старых учебниках · 8 месяцев назад
Сергей Новоселов Вот это про отрицательные многих ловит на ЕГЭ · 8 месяцев назад
8
/ — деление с дробной частью (float), // — деление нацело. Остаток через %.
3
Если очень нужно целое от /, оберни в int(5 / 2) → 2. Но // для этого и сделан.
Ваш ответ
Войдите, чтобы ответить на вопрос.