Python 除法运算符给出不同的结果
Python division operator gives different results
在 Python 中,我试图将一个整数除以一半,但根据数字的符号我遇到了两个不同的结果。
示例:
5/2 gives 2
and
-5/2 gives -3
除以-5/2如何得到-2?
>>> import math
>>> math.ceil(float(-5)/2)
-2.0
这是由于 python 四舍五入 整数除法 。下面是几个例子。在 python 中,float
类型是 stronger 类型,涉及 float
和 int
的表达式计算结果为 float
。
>>> 5/2
2
>>> -5/2
-3
>>> -5.0/2
-2.5
>>> 5.0/2
2.5
>>> -5//2
-3
要避免四舍五入,您可以利用这个 属性;而是使用 float
执行计算,以免丢失精度。然后使用 math module 到 return 该数字的上限(然后再次转换为 -> int):
>>> import math
>>> int(math.ceil(-5/float(2)))
-2
你应该像下面这样在表达式中包含除法
print -(5/2)
需要先用浮点除法再用int
截小数
>>> from __future__ import division
>>> -5 / 2
-2.5
>>> int(-5 / 2)
-2
在Python3中,浮点数除法是默认的,不需要包含from __future__ import division
。或者,您可以手动将其中一个值设置为浮点数以强制进行浮点除法
>>> -5 / 2.0
-2.5
截至 this accepted answer:
> int(float(-5)/2)
-2
> int(float(5)/2)
2
在 Python 中,我试图将一个整数除以一半,但根据数字的符号我遇到了两个不同的结果。
示例:
5/2 gives 2
and
-5/2 gives -3
除以-5/2如何得到-2?
>>> import math
>>> math.ceil(float(-5)/2)
-2.0
这是由于 python 四舍五入 整数除法 。下面是几个例子。在 python 中,float
类型是 stronger 类型,涉及 float
和 int
的表达式计算结果为 float
。
>>> 5/2
2
>>> -5/2
-3
>>> -5.0/2
-2.5
>>> 5.0/2
2.5
>>> -5//2
-3
要避免四舍五入,您可以利用这个 属性;而是使用 float
执行计算,以免丢失精度。然后使用 math module 到 return 该数字的上限(然后再次转换为 -> int):
>>> import math
>>> int(math.ceil(-5/float(2)))
-2
你应该像下面这样在表达式中包含除法
print -(5/2)
需要先用浮点除法再用int
截小数
>>> from __future__ import division
>>> -5 / 2
-2.5
>>> int(-5 / 2)
-2
在Python3中,浮点数除法是默认的,不需要包含from __future__ import division
。或者,您可以手动将其中一个值设置为浮点数以强制进行浮点除法
>>> -5 / 2.0
-2.5
截至 this accepted answer:
> int(float(-5)/2)
-2
> int(float(5)/2)
2