我有这段代码:
N = 10
for i in range(1,N):
P[i,i] = (i/N) + pow((1-i/N),2)
但是我的除法运算正在向下舍入到最接近的整数。
如何指示Python进行浮点除法?
答案 0 :(得分:5)
你正在进行整数除法。尝试这样的事情:
N = 10
for i in range(1,N):
P[i,i] = (float(i)/N) + pow((1-float(i)/N),2)
答案 1 :(得分:5)
将此行添加到脚本的顶部:
from __future__ import division
这将允许整数除法给浮点数通常的除法运算符/
。如果您还需要执行整数除法,则可以使用//
:
>>> 9/10
0.90000000000000002
>>> 9//10
0
这将是Python 3中的标准行为。
答案 2 :(得分:0)
在Python 2.x中,两个整数之间的划分是数学划分,但是很平坦。因为你要划分两个整数,一个等于或小于另一个,你得到1和0。
要获得正确的行为,请使用浮点数:
N = 10.0
for i in range(1, int(N) ):
P[i,i] = (i/N) + pow((1-i/N),2)
请注意,Python 3.x使用两个整数进行数学除法