Нещодавно я помітив, що int()
круглі плавають у напрямку до 0, тоді як ціле ділення округляє поплавок до його підлоги.
наприклад:
-7 // 2 = -4
int(-7/2) = -3
Я прочитав документацію, яка вказує:
клас int (x, база = 10)
Поверніть цілий об'єкт, побудований з числа або рядка x, або поверніть 0, якщо аргументи не вказані. Якщо x число, поверніть x. int (). Для чисел з плаваючою комою це скорочення до нуля.
і:
поділ підлоги
Математичний поділ, який округляється до найближчого цілого числа. Оператор поділу поверху //. Наприклад, вираз 11 // 4 оцінює до 2 на відміну від 2,75, повернутого поплавковим істинним поділом. Зауважимо, що (-11) // 4 дорівнює -3, тому що це -2,75 закруглені вниз. Див. PEP 238.
Але мені здається нелогічним, що дві подібні операції (поплавковий поділ на ціле число) повинні повертати різні результати.
Чи є мотивація відмінностей між функціями?
Дякую.