负数楼层划分

新手上路,请多包涵

表达式 6 // 4 产生 1 ,其中 floor 除法在除以数字后产生整数。

但是对于负数,为什么 -6 // 4 返回 -2

原文由 Naz Islam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 557
2 个回答

// 运算 符明确地确定了结果。引用 二进制算术运算 文档

结果是对结果应用“floor”函数的数学除法。

下限与四舍五入为 0 不同;地板总是移动到 _较低的整数值_。请参阅 math.floor() 功能

返回 x 的底数,即小于或等于 x 最大整数。

对于 -6 // 4 ,首先计算 -6 / 4 的结果,所以 -1.5 。地板然后移动到较低的整数值,所以 -2

如果您想改为向零舍入,则必须明确地这样做;您可以使用 int() 真正除法的函数来做到这一点:

 >>> int(-6 / 4)
-1

int() 删除小数部分,因此始终向零舍入。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

楼层划分也将向下舍入到下一个最低的数字,而不是下一个最低的绝对值。

6 // 4 = 1.5 ,向下舍入为 1,向上舍入为 2。

-6 // 4 = -1.5 ,向下舍入为 -2,向上舍入为 -1。

原文由 K. Akyoobd 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题