简单问题:
当我在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。
这种行为背后的原因是什么?我错过了什么?
答案 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。