为什么这个部门没有正确执行?

ane*_*yzm 7 python division python-2.x

我在Python中有一个奇怪的问题:除法没有正确执行:

print pointB[1]
print pointA[1]
print pointB[0]
print pointA[0]
print  (pointB[1]-pointA[1]) / (pointB[0]-pointA[0])
Run Code Online (Sandbox Code Playgroud)

这些是结果:

100
50
100
40
0
Run Code Online (Sandbox Code Playgroud)

谢谢

use*_*312 18

以上行为适用于Python 2. /在Python 3中修复了行为.在Python 2中,您可以使用:

from __future__ import division
Run Code Online (Sandbox Code Playgroud)

然后/用来获得你想要的结果.

>>> 5 / 2
2
>>> from __future__ import division
>>> 5 / 2
2.5
Run Code Online (Sandbox Code Playgroud)

由于您要分割两个整数,因此您将得到整数结果.

或者,将其中一个数字更改为a float.

>>> 5.0 / 2
2.5
Run Code Online (Sandbox Code Playgroud)

  • 我不确定它是否需要"修复" - 整数除法按照预期的方式工作.加上Python 3已经推出近2年...... (7认同)
  • 许多语言使用Python 2方式的整数除法(如果它们缺乏动态类型,这就不足为奇了).我猜它被认为是一个设计缺陷,或者它不会被改变:)顺便说一下最新版本是2.7和3.1(3.2已经在alpha中). (2认同)

Ofr*_*viv 9

它做得很好.

50/60 = 0

也许您正在寻找50.0/60.0 = 0.83333333333333337,您可以将变量转换为float来获取:

print  float(pointB[1]-pointA[1]) / (pointB[0]-pointA[0])
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

5883 次

最近记录:

8 年,6 月 前