Это связано с версией 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
Если мы введем последнее целое число с плавающей запятой, мы все равно получим ноль, поскольку к моменту, когда наше число разделится на число с плавающей точкой, уже станет 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
Наконец, когда мы вводим первое целое число с плавающей запятой, получается желаемый результат, поскольку начиная с первого деления, то есть с самого левого, мы используем числа с плавающей запятой.
Дополнительно 1: Если вы пытаетесь ответить на этот вопрос, чтобы улучшить арифметическую оценку, вы должны проверить this
Дополнительно 2: Пожалуйста, будьте осторожны в следующем сценарии:
>>> a = float(1/2/3/4/5/4/3)
>>> a
0.0