[問題] python int()以及//問題

看板Python作者 (SonGohan)時間7年前 (2018/06/10 18:39), 編輯推噓1(1015)
留言16則, 4人參與, 7年前最新討論串1/1
今天在刷leetcode時卡了一個小小問題許久 請問a=int(a/10) 和 a=a//10 這兩者之間為什麼會不一樣呢~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.214.165.119 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1528627174.A.A8A.html

06/10 18:48, 7年前 , 1F
遇到什麼樣的問題,可否舉例?
06/10 18:48, 1F

06/10 18:48, 7年前 , 2F
另外,`//`是floor division
06/10 18:48, 2F

06/10 20:19, 7年前 , 3F
就不一樣阿 遇到負的就會差1
06/10 20:19, 3F

06/10 20:46, 7年前 , 4F
推樓上, -5 // 2 = -3 , int( -5 / 2 ) = -2
06/10 20:46, 4F

06/10 21:05, 7年前 , 5F
幫@cutekid補充, py2沒有做
06/10 21:05, 5F

06/10 21:05, 7年前 , 6F
`from __future__ import division`前, int(-5/2)是-3
06/10 21:05, 6F

06/11 00:19, 7年前 , 7F
就是一個例如非常大的正整數ex:192838495837294827293做
06/11 00:19, 7F

06/11 00:19, 7年前 , 8F
出來的結果會不一樣
06/11 00:19, 8F

06/11 01:21, 7年前 , 9F
precision
06/11 01:21, 9F

06/11 01:25, 7年前 , 10F
我猜你的環境是py3,或是像我上面所說的已經引入true
06/11 01:25, 10F

06/11 01:25, 7年前 , 11F
division了.
06/11 01:25, 11F

06/11 01:25, 7年前 , 12F
當你用true division時,出來的結果的型別會是float
06/11 01:25, 12F

06/11 01:29, 7年前 , 13F
而float的mantissa不一定可以在有限位數內還原你的數字
06/11 01:29, 13F

06/11 01:29, 7年前 , 14F
所以當你將該floating number再次轉成integer後,就會
06/11 01:29, 14F

06/11 01:32, 7年前 , 15F
產生一些因為當初mantissa位數不足表達部份的誤差
06/11 01:32, 15F

06/11 01:33, 7年前 , 16F
參考: IEEE 754 floating point number
06/11 01:33, 16F
文章代碼(AID): #1R7F_cgA (Python)
文章代碼(AID): #1R7F_cgA (Python)