python float'()'的位置

时间:2018-03-03 14:33:51

标签: python python-2.7 floating-point

请问:

之间有什么区别?
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。

3 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分:0)

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

在你的情况下 float(8/5)你正在施放以浮动1.6的除法结果并舍入为1.0

HOwever,通过使用float(8)将8转换为float,然后除以5,您将强制执行浮动除法,从而得到正确的结果。

会发生同样的事情
8/float(5)