Почему Python возвращает 0 для вычисления простого деления?
Почему этот простой расчет возвращает 0
>>> 25/100*50
0
в то время как это действительно правильно вычисляется?
>>> .25*50
12.5
>>> 10/2*2
10
Что не так с первым примером?
Ответ 1
В Python 2 25/100 равен нулю при выполнении целочисленного деления. так как результат меньше 1.
Вы можете "исправить" это, добавив from __future__ import division к вашему script. Это всегда будет выполнять разделение с плавающей точкой при использовании оператора / и использовать // для целочисленного деления.
Другой вариант - сделать по меньшей мере один из операндов поплавком, например. 25.0/100.
В Python 3, 25/100 всегда 0.25.
Ответ 2
Это проблема целых усечений (т.е. любые дробные части числа отбрасываются). Итак:
25 / 100 дает 0
Однако, если хотя бы один из операндов в подразделении является поплавком, вы получите результат поплавка:
25 / 100.0 или 25.0 / 100 или 25.0 / 100.0 все дают 0.25
Ответ 3
25/100 - целочисленный расчет, который округляет (путем усечения) до 0.