Я недавно заметил, что int()
округляет число с плавающей точкой до 0, а целочисленное деление округляет число с плавающей точкой до его пола.
например:
-7 // 2 = -4
int(-7/2) = -3
Я прочитал документацию, в которой указано:
класс int (x, base = 10)
Вернуть целочисленный объект, построенный из числа или строки x, или вернуть 0, если аргументы> не заданы. Если x - это число, верните x. int (). Для чисел с плавающей запятой это усекается до нуля.
а также:
этажное подразделение
Математическое деление, которое округляется до ближайшего целого числа. Оператор подразделения этажа //. Например, выражение 11 // 4 оценивается как 2 в отличие от 2.75, возвращаемого делением с плавающей запятой. Обратите внимание, что (-11) // 4 равно -3, потому что это -2,75 с округлением вниз. Смотри PEP 238.
Но мне кажется нелогичным, что 2 аналогичные операции (деление с плавающей точкой на целое) должны возвращать разные результаты.
Есть ли мотивация для различий между функциями?
Спасибо.