我在分割蟒蛇輪問題
my max_sum = 14
total_no=4
所以當我做
print "x :", (total_sum/total_no)
面臨的問題,我得到3,而不是3.5
我試印刷方法很多,但失敗了,有人能讓我知道我以3.5格式獲得什麼方式嗎?
謝謝
我在分割蟒蛇輪問題
my max_sum = 14
total_no=4
所以當我做
print "x :", (total_sum/total_no)
面臨的問題,我得到3,而不是3.5
我試印刷方法很多,但失敗了,有人能讓我知道我以3.5格式獲得什麼方式嗎?
謝謝
在Python 2.x中,將兩個整數默認潛水你一個整數。這經常令人困惑,並已在Python 3.x中修復。您可以通過鑄造號碼之一爲float繞過它,它會自動施放其他:
float(14)/4 == 3.5
相關PEP是number 238:
當前的除法(/)操作員 數值參數的含義不明確:如果參數是整數或長整數,它將返回數學的 結果的分層,但如果返回分隔結果的合理近似值,則返回的合理近似值參數是漂浮或複雜。這使得表達式期望 漂浮或複雜結果容易出錯,當整數不是 預期但可能作爲輸入。
由於嚴重的向後兼容性問題,它在Python 2.x中沒有更改,但是它是Python 3.x中的主要更改之一。你可以在你的Python腳本的頂部用
from __future__ import division
強制新分區。這是一個__future__
-import - 它用於強制語法更改,否則可能會破壞您的腳本。還有許多其他的__future__
進口;在準備遷移到Python 3.x時,它們通常是一個好主意。
請注意,//
運算符總是意味着整數除法;如果你真的想要這種行爲,你應該優先使用它,/
。請記住,「明確優於隱含」!
這工作得很好,謝謝,但想法是直接返回結果 – daydreamer 2010-09-01 20:13:28
@learner:什麼?我不明白你的評論。如果你想浮動除法,將其中一個參數轉換爲浮點數。 – katrielalex 2010-09-01 20:15:24
如果您不喜歡添加'.0'或'float(')的'cruft',那麼'from __future__ import division'將會修復整個腳本或交互式會話(在其中逐個輸入命令)。 – 2010-09-01 20:29:34
化妝max_sum = 14.0或total_no = 4.0
可能有助於解釋@learner正在經歷整數除法。 – jball 2010-09-01 20:06:59
-1先發帖子回答沒有幫助。如果明確表示OP需要更多幫助,請不要張貼解決問題的單行報告。 – katrielalex 2010-09-01 20:11:38
你正在分割兩個整數,結果也將是一個整數,在python 2.嘗試讓你的一個操作數浮動,如max_sum = 14.0
或total_no = 4.0
獲得浮動結果。
如果你想蟒蛇2.X表現在這個問題上更直觀一點,你可以在你的腳本的頂部添加
from __future__ import division
。在python 3中,分區按照您的預期工作。
這對我們有什麼作用? – daydreamer 2010-09-01 20:12:37
你正在做一個整數運算,所以你得到最接近的整數結果:3。
您應該明確/隱含地投下max_sum
或total
以浮動。
這樣做將在Python 3進口部的另一種方式:
>>> from __future__ import division
>>> max_sum = 14
>>> total_no = 4
>>> print max_sum/total_no # the way you want it
3.5
>>> print max_sum // total_no
3
您正在使用哪個版本的Python? – jjnguy 2010-09-01 20:06:23
它是python 2.6.5 – daydreamer 2010-09-01 20:12:10