请问有什么区别:
return float((Y2-Y1))/(X2-X1)
和:
return float((Y2-Y1)/(X2-X1))
我的整个代码是:
class Line(object):
def __init__(self,coor1,coor2):
self.coor1 = coor1
self.coor2 = coor2
def slope(self):
x1,y1 = self.coor1
x2,y2 = self.coor2
return float((Y2-Y1))/(X2-X1)
coor1 = (3,2)
coor2 = (8,10)
li = Line(coor1,coor2)
li.slope()
答案应该是1.6,但如果我的代码中的返回部分是return float((Y2-Y1)/(X2-X1))
,答案将是1.0。
在Python 2中,除非导入3.x功能,否则使用'/'的整数除法会抛弃余数。
>>> 8.0/5
1.6
>>> 8/5
1
>>> from __future__ import division
>>> 8/5
1.6
用'//'划分总是留下余数。
>>> 8//5
1
Python 2整数除法:
>>> float(8) / 5
1.6
>>> float(8 / 5)
1.0
修复:
>>> from __future__ import division
>>> float(8) / 5
1.6
>>> float(8 / 5)
1.6
在python 2中,除法默认为整数1,它将始终舍入为int
在你执行float(8/5)
的情况下,你正在施放浮动分割结果为1.6并且舍入为1.0
通过将8投射到浮子(8)然后除以5,你强制进行浮动除法,得到正确的结果。同样的事情也会发生
8/float(5)