python float'()'的位置

问题描述 投票:-2回答:3

请问有什么区别:

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 python-2.7 floating-point
3个回答
2
投票

在Python 2中,除非导入3.x功能,否则使用'/'的整数除法会抛弃余数。

>>> 8.0/5
1.6
>>> 8/5
1
>>> from __future__ import division
>>> 8/5
1.6

用'//'划分总是留下余数。

>>> 8//5
1

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

0
投票

在python 2中,除法默认为整数1,它将始终舍入为int

在你执行float(8/5)的情况下,你正在施放浮动分割结果为1.6并且舍入为1.0

通过将8投射到浮子(8)然后除以5,你强制进行浮动除法,得到正确的结果。同样的事情也会发生

8/float(5)
© www.soinside.com 2019 - 2024. All rights reserved.