python shell中的1/2在程序中给出0.5,它给出0

时间:2017-08-21 10:00:32

标签: python python-3.x

简单问题:

当我在python shell中执行1/2时,它会给出浮点值

>>> 1/2
>>> 0.5

但是

sum = 0
for i in range(1, 20):
    p = 1/i
    print(p)
    val = 2.0**p
    sum += val
    print(sum)

运行此程序时,p的值始终为0。

这种行为背后的原因是什么?我错过了什么?

2 个答案:

答案 0 :(得分:1)

这可能是因为您使用python2.7

python3 1/2中的

将返回0.5

python2.7中使用相同的结果:

from __future__ import division
print(1/2) # output 0.5

或者按照@Mahi的建议使用:

p = 1.0/i

答案 1 :(得分:0)

将1 in / i更改为(1.0)/ i将使其正常工作

像这样:

sum = 0
for i in range(1, 20):
    p = (1.0)/i
    print(p)
    val = 2.0**p
    sum += val
    print(sum)

否则,您可以使用 p = 1 / float(i) 如果分子或分母是浮点数,那么结果也是。

这个问题已得到充分讨论here