http://learnpythonthehardway.org/book/ex4.html我在學習Python,爲什麼在這個例子中使用了浮點數?
有一個額外的信用問題,問我來解釋爲什麼浮點4.0使用的4
我明白,一個浮點用於準確性代替,但我無法捉摸爲什麼在這個例子中,無論如何都是必要的。
http://learnpythonthehardway.org/book/ex4.html我在學習Python,爲什麼在這個例子中使用了浮點數?
有一個額外的信用問題,問我來解釋爲什麼浮點4.0使用的4
我明白,一個浮點用於準確性代替,但我無法捉摸爲什麼在這個例子中,無論如何都是必要的。
實際上在這個特定的例子中似乎沒有任何需要float而不是int的需要。如果你想用它來劃分某些東西,它可能會產生影響,但這不會發生在這裏。 (即使這樣,它將取決於你是否使用Python 2或3,因爲float division是3中的默認值)。
如果你看一下下面的評論,zedshaw(筆者)也承認這一點:
МихаилГруздев:爲什麼用於空間4.0?也許這是驅動程序變量值應該是浮點?
zedshaw:簡單地介紹浮點作爲一個小小的謎題。在數學上,練習沒有太大意義,這只是練習。現在繼續。
感謝您發表了最有幫助的帖子。我已經知道整數和浮點數,而且我一直在關注這個想法,因爲這個代碼中出於某種特定原因必須是float。 – 2012-02-03 06:22:39
不客氣!你說得對,這個「額外的信用」問題似乎也會讓我誤解。我在頁面上留言說的同樣多。 – tzaman 2012-02-03 06:32:05
整數運算的算術結果爲整數。
>>> 3/2
1
浮點是因爲用於在Python一個int
由int
劃分產生int
(integer division)此處不意圖。如果您將float
除以int
或int
除以float
,則會得到float
。
例子:
4/3
=> 1
4.0/3
=> 1.3333333333333333
2*4/3
=> 2
2*4.0/3
=> 2.6666666666666665
但該變量不用於該示例代碼中的除法... – Lalaland 2012-02-03 06:09:48
準確地說,space_in_car只用於乘法運算。 – 2012-02-03 06:11:30
是的。這樣做是爲了讓分子稍後浮動。 – 2012-02-03 06:16:17
這是因爲一些所謂的整數除法。基本上這意味着如果你分兩個整數,結果數字必須是一個整數。因此,例如3/4
將導致0
和4/3
將導致1
。這是因爲3/4
在「真正的」數學會給你0.75並將0.75轉換爲整數,Python會截斷浮點值,並給你留下0。
解決此問題的最簡單方法是使用4.0而不是4 。將整數轉換爲浮點數並忽略整數除法,因爲整數除以浮點數將產生浮點數。 3/4.0
等於0.75
就像你想要的那樣。
它是用於「space_in_a_car」變量...以防萬一,如果你喜歡的鏈鋸,你可以將在汽車3.8人... – Macmade 2012-02-03 06:07:55
由於兒童運輸的平均數量爲2.6。 – wim 2012-02-03 06:12:38