我看到Why is -1/2 evaluated to 0 in C++, but -1 in Python?表示Python中的整数除法向无穷大舍入,即floor
应用于结果。
我认为int(value)
也会做类似floor
的事情,而我在实践中得到int(-1.5) == -1
,我的脑海里预计会-2
。
所以问题是:为什么integer division
和函数int()
之间的规则不一致?有没有合理的解释?
答案 0 :(得分:4)
int()
删除小数部分;它没有做任何舍入。来自documentation:
如果x是浮点数,则转换将截断为零。
要将float
转换为int
,这完全是合乎逻辑的行为。这是不分区,地板或其他。
//
楼层划分运营商否则显然 楼层,而不是截断。在Python 2中,对于两个整数操作数,/
除法也是底层。再次documentation:
结果是数学除法的结果,“floor”函数应用于结果
其中math.floor()
记录为:
以 x 作为浮动返回 x 的最低值,小于或等于 x 的最大整数值。
我认为这里没有矛盾;划分楼层,将浮动转为整数截断。
答案 1 :(得分:0)
round()
ndigits = 0
与round()
的关系可能更接近您的预期。但{{1}}不返回整数,而是返回浮点数:请参阅the documentation