В чем разница между int() и floor() в Python 3?

В Python 2 floor() возвратил значение float. Хотя это и не очевидно для меня, я нашел несколько объяснений, поясняющих, почему полезно иметь float floor() return float (для таких случаев, как float('inf') и float('nan')).

Однако в Python 3 floor() возвращает целое число (и возвращает ошибку переполнения для особых случаев, упомянутых ранее).

Итак, какова разница, если таковая имеется, между int() и floor()?

Ответы

Ответ 1

floor() округляется вниз. int() усекает. Разница очевидна при использовании отрицательных чисел:

>>> import math
>>> math.floor(-3.5)
-4
>>> int(-3.5)
-3

Округление отрицательных чисел означает, что они удаляются от 0, усечение приближает их к 0.

Положив это по-другому, floor() всегда будет ниже или равен оригиналу. int() будет ближе к нулю или равно.