2012-02-03 42 views
2

http://learnpythonthehardway.org/book/ex4.html我在學習Python,爲什麼在這個例子中使用了浮點數?

有一個額外的信用問題,問我來解釋爲什麼浮點4.0使用的4

我明白,一個浮點用於準確性代替,但我無法捉摸爲什麼在這個例子中,無論如何都是必要的。

+2

它是用於「space_in_a_car」變量...以防萬一,如果你喜歡的鏈鋸,你可以將在汽車3.8人... – Macmade 2012-02-03 06:07:55

+1

由於兒童運輸的平均數量爲2.6。 – wim 2012-02-03 06:12:38

回答

4

實際上在這個特定的例子中似乎沒有任何需要float而不是int的需要。如果你想用它來劃分某些東西,它可能會產生影響,但這不會發生在這裏。 (即使這樣,它將取決於你是否使用Python 2或3,因爲float division是3中的默認值)。

如果你看一下下面的評論,zedshaw(筆者)也承認這一點:

МихаилГруздев:爲什麼用於空間4.0?也許這是驅動程序變量值應該是浮點?

zedshaw:簡單地介紹浮點作爲一個小小的謎題。在數學上,練習沒有太大意義,這只是練習。現在繼續。

+0

感謝您發表了最有幫助的帖子。我已經知道整數和浮點數,而且我一直在關注這個想法,因爲這個代碼中出於某種特定原因必須是float。 – 2012-02-03 06:22:39

+0

不客氣!你說得對,這個「額外的信用」問題似乎也會讓我誤解。我在頁面上留言說的同樣多。 – tzaman 2012-02-03 06:32:05

-1

整數運算的算術結果爲整數。

>>> 3/2 
1 
1

浮點是因爲用於在Python一個intint劃分產生intinteger division)此處不意圖。如果您將float除以intint除以float,則會得到float

例子:

4/3 
=> 1 
    4.0/3 
=> 1.3333333333333333 
    2*4/3 
=> 2 
    2*4.0/3 
=> 2.6666666666666665 
+2

但該變量不用於該示例代碼中的除法... – Lalaland 2012-02-03 06:09:48

+0

準確地說,space_in_car只用於乘法運算。 – 2012-02-03 06:11:30

+0

是的。這樣做是爲了讓分子稍後浮動。 – 2012-02-03 06:16:17

0

這是因爲一些所謂的整數除法。基本上這意味着如果你分兩個整數,結果數字必須是一個整數。因此,例如3/4將導致04/3將導致1。這是因爲3/4在「真正的」數學會給你0.75並將0.75轉換爲整數,Python會截斷浮點值,並給你留下0。

解決此問題的最簡單方法是使用4.0而不是4 。將整數轉換爲浮點數並忽略整數除法,因爲整數除以浮點數將產生浮點數。 3/4.0等於0.75就像你想要的那樣。

相關問題