Подтвердить что ты не робот

Почему Python возвращает 0 для вычисления простого деления?

Почему этот простой расчет возвращает 0

>>> 25/100*50  
0

в то время как это действительно правильно вычисляется?

>>> .25*50
12.5

>>> 10/2*2  
10

Что не так с первым примером?

4b9b3361

Ответ 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.