Это связано с используемой вами версией python. В основном он принимает поведение C: если вы разделите два целых числа, результаты будут округлены до целого. Также имейте в виду, что Python выполняет операции слева направо, что играет роль при приведении типов.
Пример: поскольку этот вопрос всегда возникает у меня в голове, когда я выполняю арифметические операции (нужно ли преобразовать в число с плавающей запятой и какое число), представлен пример из этого аспекта:
>>> a = 1/2/3/4/5/4/3
>>> a
0
Когда мы делим целые числа, неудивительно, что оно округляется ниже.
>>> a = 1/2/3/4/5/4/float(3)
>>> a
0.0
Если мы приведем последнее целое число к типу float, мы все равно получим ноль, поскольку к тому времени, когда наше число делится на float, уже становится 0 из-за целочисленного деления.
>>> a = 1/2/3/float(4)/5/4/3
>>> a
0.0
Тот же сценарий, что и выше, но смещение типа float немного ближе к левой стороне.
>>> a = float(1)/2/3/4/5/4/3
>>> a
0.0006944444444444445
Наконец, когда мы приводим первое целое число к типу float, результат будет желаемым, поскольку, начиная с первого деления, то есть самого левого, мы используем float.
Дополнительно 1: если вы пытаетесь ответить на этот вопрос, чтобы улучшить арифметическую оценку, вам следует проверить это
Дополнительно 2: Будьте осторожны со следующим сценарием:
>>> a = float(1/2/3/4/5/4/3)
>>> a
0.0