为什么这个分区没有正确执行?
我有一个奇怪的问题在Python:不正确地进行分工:为什么这个分区没有正确执行?
print pointB[1]
print pointA[1]
print pointB[0]
print pointA[0]
print (pointB[1]-pointA[1])/(pointB[0]-pointA[0])
这些结果如下:
100
50
100
40
0
感谢
上述行为是真实的Python 2 。在Python 3中修复了/
的行为。在Python 2中,您可以使用:
from __future__ import division
然后使用/
来获得您想要的结果。
>>> 5/2
2
>>> from __future__ import division
>>> 5/2
2.5
因为您将两个整数,你得到的结果为整数。
或者,将其中一个数字更改为float
。
>>> 5.0/2
2.5
我不确定它需要什么是'固定的' - 整数除法按照它应该做的那样工作。加上Python 3已经出现了近2年...... – 2010-10-03 18:34:20
我会引用PEP238,'这使得表达式期望浮点或复杂的结果容易出错,当整数不是预期的但可能作为输入。“我也怀疑他会使用Python 3.0,因为我想大家现在明确坚持2.6。但我也在学习,所以我可能错了。 – user225312 2010-10-03 18:36:57
许多语言使用整数除法Python 2方式(如果缺少动态输入,这并不奇怪)。我认为它被认为是一个设计缺陷,或者它不会被改变:)顺便说一句,最新版本是2.7和3.1(在3.2版本已经在alpha)。 – 2010-10-03 18:45:53
这是在Python中如何使用整数除法。在计算中使用浮点数或浮点数:
float(pointB[1]-pointA[1])/(pointB[0]-pointA[0])
在所有情况下,投射浮动并不能正确工作。 – 2016-04-28 12:45:24
它正确完成。
50/60 = 0
也许你正在寻找的50.0/60.0 = 0.83333333333333337,你可以投你的变数浮动吃出:
print float(pointB[1]-pointA[1])/(pointB[0]-pointA[0])
其整数除法从py 2.x中,即'5/6 = 0',试着将denom或分子先投射出去 – Anycorn 2010-10-03 18:28:08
参见http://*.com/questions/117250/how-do-i-get-a-decimal-value-when-using-在-python-division-operator-in-python,http://*.com/questions/1787249/why-doesnt-this-division-work-in-python,http://*.com/questions/2958684/python-部门 – 2010-10-03 18:43:37