我有一個奇怪的問題在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:不正確地進行分工:爲什麼這個分區沒有正確執行?
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://stackoverflow.com/questions/117250/how-do-i-get-a-decimal-value-when-using-在-python-division-operator-in-python,http://stackoverflow.com/questions/1787249/why-doesnt-this-division-work-in-python,http://stackoverflow.com/questions/2958684/python-部門 – 2010-10-03 18:43:37