为什么在Python3中x//y返回float?
我用双斜杠将2个浮点数(或整数)像为什么在Python3中x//y返回float?,python,python-3.x,types,Python,Python 3.x,Types,我用双斜杠将2个浮点数(或整数)像 t = x // y 在本例中,t必须是一个自然数,但python将其作为float返回 根据惯例和文件,对于x和yfloatint不会有任何好处,但只要->float就足够了,就会产生不必要的成本和类型损失 通常,当任何操作数是浮点时,只有当作为浮点执行时,/的计算才是正确的:浮点操作数可能包含不能表示为整数的小数部分 >4.3//1.1 3 >>>int(4.3)//int(1.1) 4. 因此,对于任何浮点操作数,/本身就是一个浮点计算,并产生这
t = x // y
在本例中,t
必须是一个自然数,但python将其作为float返回
根据惯例和文件,对于x
和y
floatx//y
的输出类型为float
s或int
s
我的问题是,为什么公约是这样?在float
而不是int
中获得结果有什么好处?根据我的理解,floor division总是返回一个整数。因此,行int(x//y)==x//y
将始终返回True
。即使结果是nan
,这也不重要
所以我的问题是为什么float
更好?在什么情况下会有所不同
这不是的副本,因为在那里他们问这是否是一个bug,而我想知道python设计者为什么做出这个决定。TLDR:强制
/
为(float,float)->int
不会有任何好处,但只要->float
就足够了,就会产生不必要的成本和类型损失
通常,当任何操作数是
浮点
时,只有当作为浮点
执行时,/
的计算才是正确的:浮点
操作数可能包含不能表示为整数的小数部分
>4.3//1.1
3
>>>int(4.3)//int(1.1)
4.
因此,对于任何浮点
操作数,/
本身就是一个浮点
计算,并产生这样的结果()。将结果提供为int
仍将计算结果为float
,仅将其转换为int
——精度不会提高
根据PEP 238规定的行为,程序员可以自行决定是希望强制执行
int
类型,还是更喜欢真正的float
结果。您能提供一个最小的可复制示例吗?您的Python版本是什么?/
是楼层划分。例如,在py3中,如果执行10//3
,将得到3
整数。我尝试使用带有“lst[x//y]”的列表,但我必须将其转换为int。但在什么情况下,它不会是int?t
不必是自然数。可以是任何整数。是的。如果你问“为什么”,你的问题会因为另一个原因而结束:那就是,它主要基于opnion,不适合这个网站