【发布时间】:2020-07-13 07:17:30
【问题描述】:
我有一个关于python3中负数除法的问题
当我计算 6//(-132) 为什么它是 -1 而不是 0 时。
python处理这种划分的机制是什么?
【问题讨论】:
-
你正在做一个整数除法,结果总是十进制版本的下限。由于你所有的除法都在 0 和 -1 之间,你总是得到 -1
-
哦,我明白了,我明白了,谢谢你们
标签: python-3.x
我有一个关于python3中负数除法的问题
当我计算 6//(-132) 为什么它是 -1 而不是 0 时。
python处理这种划分的机制是什么?
【问题讨论】:
标签: python-3.x
实际上,您使用的不是 Python 3.x,而是 Python 2.x,您看到的是整数除法的结果,这是当时的默认值:
>>> 1/(-2)
-1
>>> -1/2
-1
>>> -23/45
-1
要在 Python 2.x 中获得预期结果,请尝试以下操作:
from __future__ import division
>>> 1/(-2)
-0.5
>>> -1/2
-0.5
>>> -23/45
-0.5111111111111111
现在,对于编辑后的问题:当您进行整数除法// 时,该值将向下舍入为负值-1。 (这也称为“地板分割”)。有关详细信息,请参阅此post。
>>> 6 / (-132)
-0.045454545454545456
>>> 6 // (-132)
-1
【讨论】:
在余数运算中,python总是以底数或最大整数函数作为答案
【讨论】:
很可能您没有使用 python 3,因为在我空闲的 python 3.8 on 1/-2 它显示 -0.5 和 -1/2 的情况下相同
【讨论】: