[英]Automatic int to float conversion
m = 10
x = 5
val = 1
print(type(val))
for i in range(1, x+1):
val = (val * (m + i)) / (i)
print(type(val))
print(val)
在这里,最初的val
是int
类型的,但是在循环中,尽管我正在执行整数除法运算,但是它被转换为float
。 为什么会这样呢?
您必须使用: //
val = (val * (m + i)) // (i)
而且您的val将仍然是整数
/
的行为已通过以下方式更改: https : //www.python.org/dev/peps/pep-0238/
operator
模块文档还给出了有关true division
(返回浮点数)和floor division
之间的分隔的提示, floor division
返回地板,因此返回int
它在PEP 238
真语义划分”中指定:
将
int
和long
进行真除法会将参数转换为float
,然后应用float
除法。 也就是说,即使2/1
也将返回float
(2.0
),而不是int
。 对于float
和complex
,它将与经典除法相同。
因此,当找到一个int
时,将执行自动转换。 请注意,这是Python 3中的默认行为。在python 2中,您需要从__future__
import
,以获得相似的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.