2014-03-01 22 views
1

所以。在我的程序中,我有一部分檢查除法結果是否是整數。例如,6/3 = 2(True)或7/3 = 1.66(False)。問題是當我做一個像6/3這樣的分區時,應該是一個整數的結果被歸類爲一個浮點數,因爲它出現爲2.0而不是2。有什麼辦法,以便小數點/浮點數答案被歸類爲帶小數點的浮點數,整數答案被歸類爲一個整數?任何方式如此整數被歸類爲整數沒有.0和浮游物歸類爲浮游物?

(該結尾沒有.0號),我現在有這樣的:

6/3 = 2.0 (float)  
7/3 = 1.66 (float) 

我想這一點:

6/3 = 2 (integer)  
7/3 = 1.66 (float) 
+5

Python 2或3?分部在他們的行爲不同。 –

+0

我正在使用Python 3.3.0 – DylanJ

回答

4

只需使用float.is_integer()

例如,由OP表示:

>>> num1 = 6/3 # 2.0 
>>> num1.is_integer() 
True 
>>> num2 = 7/3 # 2.33 
>>> num2.is_integer() 
False 

無需任何複雜的這裏 - 貫徹到你的函數,這應該是很容易。

+0

謝謝。幫助很多! – DylanJ

+1

@DylanJ在這種情況下,您應該接受答案,以便讓其他用戶知道您的問題已解決。 Upvotes也非常感謝。 –

+0

我不明白你的問題,我的'已刪除'答案,@AlexThornton。我的回答是正確的,它只是有不正確的語法(在我被刪除之前我已經修復)。 OP詢問如何檢測除法的結果何時產生一個沒有餘數的整數。我認爲你呼籲人們標明我的回答是否被刪除是不必要的。 –

-3

7/3 * 3 = 7?

return ((n1 // n2 * n2) == n1) 
+0

這隻適用於'/'是整數除法,它不在Python 3中。 – jwodder

+0

你是對的@jwodder。在python3中,你必須使用''''。您還需要將表達式封裝在parens中以便實際工作。我確定了我的答案。我用我手機中的錯誤語法回答。也許我會避免這樣做。 –