2015-10-01 4 views
2

Почему мой код работал только тогда, когда я превратил divisor в float?Python - Divide работает только при использовании с плавающей запятой для divisor

a = 50/1000.0*100 

Когда я сделал ниже, возвратил 0.

a = 50/1000*100 
+1

Возможный дубликат [разделения Python] (http://stackoverflow.com/questions/2958684/python -division) – dfeuer

ответ

3

50/1000 0 в Python 2.x, потому что деление чисел предполагает, что вы хотите целочисленные результаты. Если вы преобразуете числитель или знаменатель в float, вы получите правильное поведение. В качестве альтернативы вы можете использовать

from __future__ import division

, чтобы получить питона 3.x семантику.

2

Когда оба операнда являются целыми числами в Python 2, a/b - это то же самое, что и у a//b, что означает, что вы получаете целочисленное деление. 50/1000 - 0 в этом случае (с остатком 50, как вы можете видеть из возвращаемого значения divmod(50, 1000)).

0

если вы используете Python 2.x выше результат пришел -х, если результат использования Python 3.x является

Python 3.4.3 (default, Jul 28 2015, 18:24:59) 
[GCC 4.8.4] on linux 
>>> a = 50/1000*100 
>>> a 
5.0 
>>> a = 50/1000.0*100 
>>> a 
5.0 
>>>