您好,登錄后才能下訂單哦!
這篇文章主要介紹了python3如何實現除法結果為整數,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
101/100,想要的結果是1,但是算出來的結果是1.01
101 // 100
結果圖
補充:python2 與 3:一般除法、除法取整、除法取余、精確減法與精確除法
python2的除法,與c語言除法類似,兩個整數相除結果一定是整數,除數與被除數有一個是浮點數,結果就是浮點數。因此當兩個整數相除,結果又有小數時,由于結果是整數,所以小數部分會被省略,針對這種情況,要實現真正的除法,除數與被除數至少有一個應改為浮點數。(貌似python2.7開始,除法和python3除法一樣了,沒有仔細考究)
a = 3 b = 2 print a/b print float(a)/b print a/float(b) print float(a)/float(b) # 結果 1 1.5 1.5 1.5
加一個int(),進行強制類型轉換即可。
a = 4.5 b = 3 print a/b print int(a/b) # 結果 1.5 1
利用%操作即可。
a = 5.5 b = 3 print a % b # 結果 2.5
python3的除法就直接使用"/",就可以了,不存在python2的情況
a = 3 b = 2 print(a/b) # 結果 1.5
利用"//"操作 a = 5.5 b = 2 print(a//b) # 結果 2.0
利用"%"操作
a = 5.5 b = 2 print(a%b) # 結果 1.5
我們先看看下面的輸出
a = 0.9 b = 1 print(b-a) print((b-a)/100) print((0.1)/100) # 結果 0.09999999999999998 0.0009999999999999998 0.001
python計算要把數字先轉為二進制,因為浮點數以二進制形式表示時的有窮性(利用乘K取余法,0.9的二進制無限延展),會導致計算誤差。下面摘自python文檔原話。
On most machines today, floats are approximated using a binary fraction with the numerator using the first 53 bits starting with the most significant bit and with the denominator as a power of two.
這不是只有python才有的bug,也不是你代碼的bug,所有的編程語言都會有這個問題,當然可能很多編程語言會使用某些機制來規(guī)避這種顯示。回到該blog的例子,0.9的二進制表示如下:
0.1110011001100110011001100110011001100110011001100110011
1-0.9的二進制表示為:
0.0001100110011001100110011001100110011001100110011001100
轉化過來就是0.09999999999999998
這時候為了實現精確運算,可以使用類decimal。
import decimal decimal.getcontext().prec = 10 # 取小數點后精度到第10位 a = 0.9 b = 1 print(decimal.Decimal(b)-decimal.Decimal(a)) print((decimal.Decimal(b)-decimal.Decimal(a))/100) print((0.1)/100) # 結果 0.1000000000 0.0010000000 0.001
當然,直接使用近似函數round()也是可以的。
a = 0.9 b = 1 print(round(b-a, 10)) print(round((b-a)/100, 10)) print(round((0.1)/100, 10)) # 結果 0.1 0.001 0.001
感謝你能夠認真閱讀完這篇文章,希望小編分享的“python3如何實現除法結果為整數”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。