关于python:调用类型(1/2)返回整数?

Calling type(1/2) returns integer?

本问题已经有最佳答案,请猛点这里访问。

所以我注意到打电话:

1
print type(1/2)

返回一个整数,但它不应该是浮点型吗?


尝试type(1/2.0),这将返回float。其中一个数字必须是一个浮点值才能得到浮点中的返回值。

python-2.x除法运算符遵循经典除法。当出现整数操作数时,经典除法会截断小数点,返回整数(也称为楼层除法)。当给定一对浮点操作数时,它返回实际的浮点商(即真除法)。

例子:

1
2
3
4
>>> 1 / 2          # integer truncation (floor division)
0
>>> 1.0 / 2.0      # returns real quotient (true division)
0.5

在python 3.x中,division的工作方式不同。type(1/2)将返回float类型。python-3.x除法运算符遵循真正的除法。


在python 2X中,没有remainder/divider的除法加到了商=>floor除法中。如果您想强制2x返回true division(remainder/divider加在商上),那么尝试。

1
2
3
>>>from __future__ import division
>>>2/3
>>>0.6666666666666666

但是,如果你需要返回上一个行为(即楼层划分),那么尝试

1
2
>>>2//3
>>>0

在python中,发生3次真正的除法-