由于Python整数除法运算符(a // b
)始终会返回一个可以安全存储在中的值,int
而不会丢失精度(无论a和b的值如何),为什么以下情况成立?
如果一个或两个操作数均为类型float
,则此运算符将返回float
。
仅当两个操作数均为类型int
时,此运算符才会返回int
。
如果每个实现都__floordiv__
返回,是否会更加一致int
?
Python指出这两个参数都被强制转换为通用类型。从数值类型文档中:
Python完全支持混合算术:当二进制算术运算符具有不同数值类型的操作数时,具有“较窄”类型的操作数将扩展为另一种,其中整数比浮点数窄,比浮点数窄。
并从表达式文档的“算术转换”部分中:
当以下对算术运算符的描述使用短语“将数字参数转换为通用类型”时,这意味着内置类型的运算符实现如下:
- 如果一个参数是复数,则另一个参数将转换为复数;
- 否则,如果其中一个参数为浮点数,则另一个参数转换为浮点;
- 否则,两者都必须是整数,并且不需要转换。
然后二进制算术运算部分(包括下位除法)使用该措辞:
在
/
(部门)和//
(楼科)运营商获得他们的论据商。首先将数字参数转换为通用类型。
楼层划分操作员也不例外。所有算术运算符的行为完全相同。
如果楼层划分的行为有所不同,这将是该规则的例外,从而导致行为不一致,而不是更加一致。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句