← Все вопросы

Почему 5 / 2 даёт 2.5, а 5 // 2 даёт 2?

Задан 8 месяцев назад1к просмотров3 ответа
19

Ожидал, что деление целых чисел даст целое, а получил 2.5. И что это за двойной слэш //?

3 ответа

28
✓ Принятый ответ — помог автору

В Python 3 одиночный / — это всегда обычное (вещественное) деление, и результат всегда float, даже если делится нацело: 4 / 2 даёт 2.0, а не 2.

Двойной // — это целочисленное деление (округление вниз, к меньшему): 5 // 22, 7 // 32. Если нужен остаток — оператор %: 5 % 21.

Кстати, для отрицательных // округляет именно вниз: -5 // 2-3, а не -2.

Сергей Малишевский В Python 2 / для целых давал целое, отсюда путаница в старых учебниках · 8 месяцев назад
Сергей Новоселов Вот это про отрицательные многих ловит на ЕГЭ · 8 месяцев назад
8

/ — деление с дробной частью (float), // — деление нацело. Остаток через %.

3

Если очень нужно целое от /, оберни в int(5 / 2) → 2. Но // для этого и сделан.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект