Відповіді:
У Python 3.x 5 / 2повернеться 2.5і 5 // 2повернеться 2. Перший - це поділ з плаваючою комою, а останній - поділ на підлогу , іноді його також називають цілим поділом .
У Python 2.2 або пізнішої версії в рядку 2.x немає різниці для цілих чисел, якщо ви не виконаєте a from __future__ import division, що спричиняє Python 2.x прийняти поведінку 3.x.
Незалежно від майбутнього імпорту, 5.0 // 2повернеться, 2.0оскільки це результат підрозділу підлоги.
Детальний опис можна знайти на веб-сторінці https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
python -Qnew. інші варіанти розподілу: -Qold( по замовчуванню), -Qwarn,-Qwarnall
5.0 / 2повертається 2.5у всіх версіях, як і 5 / 2.0- стара поведінка відрізняється лише тоді, коли є обидва операнди int.
Щоб уточнити лінію Python 2.x, / це не поділ підлоги, ані справжній поділ. Поточна прийнята відповідь на це не зрозуміла.
/це поділ на підлогу, коли обидва аргументи є int, але це істинне поділ, коли один або обидва аргументи єfloat .
Сказане розповідає більше правди і є більш зрозумілим, ніж 2-й абзац у прийнятій відповіді.
//реалізує "поділ підлоги", незалежно від вашого типу. Так
1.0/2.0дадуть 0.5, але обидва 1/2, 1//2і 1.0//2.0дадуть0 .
Див https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator подробиці
math.floor()або math.fmod()якщо ви не впевнені, що відбувається з одинарними операторами.
/і //є бі-ні краплі операторів (два операнда, лівий і правий, чисельник і знаменник)
/ -> Поділ з плаваючою комою
// -> Поділ підлоги
Розглянемо приклади як в python 2.7, так і в Python 3.5.
Python 2.7.10 проти Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 проти Python 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Тепер, якщо ви хочете мати (у python 2.7) такий же вихід, як у python 3.5, ви можете зробити наступне:
Пітон 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
Там, де немає різниці між розділеннями підлоги як в python 2.7, так і в Python 3.5
138.93//3 ---> 46.0 #Python 2.7
138.93//3 ---> 46.0 #Python 3.5
4//3 ---> 1 #Python 2.7
4//3 ---> 1 #Python 3.5
-100 // 33=> -4 ; 100 // -33=> -4 ; але через напрямок округлення підлоги функціонал наступний може здатися протиінтуїтивним порівняно з попереднім: -100 // -33=> 3 .
Як уже всі відповіли, // це поділ підлоги.
Чому це важливо, це те, що // це однозначно поділ підлоги у всіх версіях Python з 2.2, включаючи версії Python 3.x.
Поведінка /може змінюватися залежно від:
__future__імпорт чи ні (локальний модуль)-Q oldабо-Q new>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
Python 2.7 та інша майбутня версія python:
/)Лівий операнд ділиться на операнд правого
Приклад: 4 / 2 = 2
//)Поділ операндів, де результатом є коефіцієнт, у якому цифри після десяткової точки видаляються. Але якщо один з операндів від'ємний, результат посилається, тобто округляється від нуля (до негативної нескінченності):
Приклади: 9//2 = 4і 9.0//2.0 = 4.0, -11//3 = -4,-11.0//3 = -4.0
І /дивізіон, і //оператор підрозділу підлоги працюють аналогічно.
Подвійна коса риса,, //- це поділ підлоги:
>>> 7//3
2
//це поділ підлоги, він завжди дасть вам цілий рівень результату. Інший - «регулярний» поділ.
Наведені вище відповіді хороші. Я хочу додати ще один момент. До деяких значень обидва вони призводять до одного коефіцієнта. Після цього оператор ділення підлоги ( //) працює нормально, але не /оператор поділу ( ).
- > int(755349677599789174/2)
- > 377674838799894592 #wrong answer
- > 755349677599789174 //2
- > 377674838799894587 #correct answer
5.0//2призводить до 2.0, а не 2тому, що тип повернення значення, що повертається з// оператора дотримується правил примусу python (тип кастингу).
Python сприяє перетворенню нижчого типу даних (цілого) у вищий тип даних (float), щоб уникнути втрати даних.
// це поділ підлоги, він завжди надасть вам значення підлоги результату./- поділ з плаваючою комою.Далі - різниця між /та //; Я виконував ці арифметичні операції в Python 3.7.2
>>> print (11 / 3)
3.6666666666666665
>>> print (11 // 3)
3
>>> print (11.3 / 3)
3.7666666666666667
>>> print (11.3 // 3)
3.0
//цілим поділом для причини введення оператора до цілого поділу.