В Python 2.x деление двух целых чисел по умолчанию дает вам еще одно целое число. Это часто сбивает с толку, и это было исправлено в Python 3.x. Вы можете обойти это, бросив одно из чисел в число с плавающей точкой, которое автоматически разыграет другое:
float( 14 ) / 4 == 3.5
Соответствующий PEP: номер 238 :
Текущий оператор деления (/) имеет
неоднозначное значение для
числовые аргументы: возвращает пол математического
результат деления, если аргументы целочисленные или длинные, но это
возвращает разумное приближение результата деления, если
аргументы являются поплавками или сложными. Это делает выражения ожидающими
плавающие или сложные результаты подвержены ошибкам, когда целые числа не
ожидается, но возможно в качестве входных данных.
Он не был изменен в Python 2.x из-за серьезных проблем обратной совместимости, но был одним из основных изменений в Python 3.x. Вы можете форсировать новое деление с помощью строки
from __future__ import division
вверху вашего скрипта Python. Это __future__
-импорт - он используется для принудительного изменения синтаксиса, которое в противном случае может нарушить ваш скрипт. Есть много других __future__
импортных товаров; их часто рекомендуется использовать при подготовке к переходу на Python 3.x.
Обратите внимание, что оператор //
всегда означает целочисленное деление; если вы действительно хотите это поведение, вы должны использовать его вместо /
. Помните, «явное лучше, чем неявное»!