現來看如下示例:
def **g(first, *rest):
return (first + sum(rest)) / (1 + len(rest))
# sample use
**g(1, 2) # 1.5
**g(1, 2, 3, 4) # 2.5
源程式只是為了演示變長引數的使用,不過 python 2.7.1 的直譯器裡,我得到的結果卻和注釋的結果不一樣
>>> def **g(fir程式設計客棧st, *rest):
... return (first + sum(rest)) / (1 + len(rest))
...
>>> **g(1, 2)
1 >>> **g(1, 2, 3, 4)
2可以很明顯的看到,小數點後的資料被截斷了,我記得兩個整數相除,apxdbnkr"//" 應該才是取整,難道我記錯了?
>>> def **g(first, *rest):
... return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//'
...
>>> **g(1, 2)
1 >>> **g(1, 2, 3, 4)
2將 「/」 改成了「//」,得到的結果是一樣的,「//」的確是取整這一點我是沒記錯,不過為什麼「/」的結果也是截斷了的?
同樣的程式我在 3.4.1 的直譯器裡面做了測試,得到了預想的結果:
>>> def **g(first, *rest):
... return (first + sum(rest)) / (1 + len(rest))
...
>>> **g(1, 2)
1.5
>>> **g(1, 2, 3, 4)
2.5
>>> def **g(first, *rest):
... return (first + sum(rapxdbnkrest)) // (1 + len(rest)) # change '/' to '//'
...
>>> **g(1, 2)
1 >>> **g(1, 2, 3, 4)
2可以看到在 3.4.1 的直譯器裡,「/」的結果保留了小數字,而「//」則是取整後的結果
搜尋之後,找到了stackoverflow上的這個問題:python裡如何強制除法的結果為浮點數? 注意這個是針對 2.x 的版本,3.x 裡面並不存在這樣的問題
答案的前兩個解決方案,都很不錯:
方法1:
>>> from __future__ import division
>>> a = 4
>>> b = 6
www.cppcns.com>>> c = a / b
>>> c
0.66666666666666663
方法2:
類似於c語言裡面的做法:
c = a / float(b)
本文標題: python中除法使用的注意事項
本文位址:
python中的除法
在未來的 python 3.0中,x y將只執行true除法,而與運算元無關 x y則執行floor除法。如果需要在2.5版本的 python中進行這樣的用法,則需要在 前加入from future import division的宣告。如 python from future import div...
python中的除法
和 在python2中為傳統除法,即當除數被除數都為整數時結果為捨去小數部分的整數,除數和被除數有乙個為浮點數,結果為精確的浮點數。在python3中為真除法,無論除數和被除數為什麼,結果都為精確的浮點數。在python2和python3中為地板除。從python2.2開始到最新的python3,增...
Python中的除法
python中分為3種除法 傳統除法 精確除法 地板除。傳統除法 print 10 3 輸入結果 3.3333333333333335 精確除法 即使是兩個整數恰好整除,結果也是浮點數 print 9 3 輸入結果 3.0 地板除兩個整數的除法仍然是整數 print 9 3 輸入結果 3 你沒有看錯...