Python和Floats

时间:2011-10-18 14:27:22

标签: python floating-point integer

我有这段代码:

N = 10
for i in range(1,N):
    P[i,i] = (i/N) + pow((1-i/N),2)

但是我的除法运算正在向下舍入到最接近的整数。

如何指示Python进行浮点除法?

3 个答案:

答案 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使用两个整数进行数学除法