据我所知,整数除法//
运算符保证返回一个整数。但是,在2 // 1 == 1
时,我也会得到2.0 // 1 == 2.0
。为什么python不生成整数,并且将输出转换为int
是否总是安全的?
答案 0 :(得分:5)
你误解了操作员。它是 floor division 运算符,而不是整数除法运算符。
对于浮点输入,它仍会返回一个浮动浮点值。
来自Binary arithmetic operations section:
/
(除法)和//
(地板除法)运算符产生其参数的商。数字参数首先转换为通用类型。整数除法产生浮点数,而整数除法得到整数;结果是数学除法的结果,“floor”函数应用于结果。
地板的结果可以安全地转换为整数。