2016-01-21 81 views
0

Python新手和寫一個簡單的代碼將華氏轉換成Celcius。在Python中的數學運算

有人能告訴我爲什麼這兩行代碼給出不同的結果嗎?

cConvert = (number - 32)/(9/5) 

cConvert = (number - 32)/1.8 

9/5 = 1.8但是我該如何編寫代碼而不必自己計算9/5?

感謝

+1

這是因爲'9/5'結果在一個int。所以你可以通過使任何一個值浮動來改變返回類型 –

回答

0

如果您使用的是Python 2,整數除法會生成一個整數結果,所以您需要將一個或兩個操作數轉換爲float以獲得所需的結果。在Python 3中,整數除法產生一個float結果(即使結果是一個確切的整數),所以在Python 3中,不需要顯式轉換爲float。

嘗試以下操作:

cConvert = (number - 32)/(float(9)/5) 

或者:

cConvert = (number - 32)/(9.0/5) 

這應該給你你期待的結果,在這兩個的Python 2和Python 3

0

您需要更改9或5成float喜歡9.0/5或9/5.0,或兩者兼而有之。如果不是,9/5將返回結果的整數部分,1

1

在Python 2,這是一個int結果:

>>> 9/5 
1 

但是,這是一個浮動的結果:

>>> 9/5.0 
1.8 

作爲是這樣的:

>>> 9.0/5 
1.8 

所以在方程中添加.0到opperands之一,使日操作發生爲浮動。

1

假設這是Python 2中,您可以通過顯式使用float文字9./59/5.9./5.解決這一問題(你可以在.後添加0,如果你喜歡,但它沒有必要在尾點本身使得float文字),或者你可以移動到Py3語義。

from __future__ import division 

到源文件to get Py3 division rules的頂部:你的代碼,如果你添加作品完全一樣寫入。如果你想分區劃分,你可以使用9 // 5,否則,使用Py3分區時,int/int總是導致float