2016-08-04 152 views

回答

2

我會說,如果其中一個參數是浮動,它總是會強制浮動,因爲float是最常見的數字類型。所以如果你用浮點數和其他數字解釋器進行一些操作(在你的情況下乘法),可以肯定它可以將其他數字轉換爲浮點數(不管它是int,Fraction還是Bool)而不丟失任何信息,但它不能以其他方式做到這一點。

這是鏈接(https://docs.python.org/2.4/lib/typesnumeric.html) 它暗示了我明顯的東西,我忘了。複數比Float更通用。所以,如果你會嘗試乘法浮動複雜。你會變得複雜。

「Python完全支持混合算術:當二進制算術運算符的操作數具有不同的數值類型時,具有」窄「類型的操作數會擴展到另一個操作數,其中純整數比長整數窄比浮點窄比比較複雜,比較混合類型的數字使用相同的規則。「

+0

謝謝你的回答。我想知道你能否指出我的任何相關文件。謝謝 – galaxyan

+0

編輯答案,提供鏈接和報價 –

-1

沒有,它的工作原理是因爲分數類實現用於與其他對象(浮在你的情況下)定義了一個乘法的結果__mul__(可能__rmul__)方法。

這就是所謂的操作符重載。

編輯:我不明白爲什麼我downvoted。根據你的例子,答案是不,你不總是得到一個浮動,它取決於其他對象

例如,可以在Python餾分源代碼中看到的__mul____rmul__實現:https://hg.python.org/cpython/file/tip/Lib/fractions.py#l421且確實的計算功能:https://hg.python.org/cpython/file/tip/Lib/fractions.py#l377

相關問題