看板 Python 關於我們 聯絡資訊
今天在刷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
gmccntzx1: 遇到什麼樣的問題,可否舉例? 06/10 18:48
gmccntzx1: 另外,`//`是floor division 06/10 18:48
djshen: 就不一樣阿 遇到負的就會差1 06/10 20:19
cutekid: 推樓上, -5 // 2 = -3 , int( -5 / 2 ) = -2 06/10 20:46
gmccntzx1: 幫@cutekid補充, py2沒有做 06/10 21:05
gmccntzx1: `from __future__ import division`前, int(-5/2)是-3 06/10 21:05
SuperBu: 就是一個例如非常大的正整數ex:192838495837294827293做 06/11 00:19
SuperBu: 出來的結果會不一樣 06/11 00:19
djshen: precision 06/11 01:21
gmccntzx1: 我猜你的環境是py3,或是像我上面所說的已經引入true 06/11 01:25
gmccntzx1: division了. 06/11 01:25
gmccntzx1: 當你用true division時,出來的結果的型別會是float 06/11 01:25
gmccntzx1: 而float的mantissa不一定可以在有限位數內還原你的數字 06/11 01:29
gmccntzx1: 所以當你將該floating number再次轉成integer後,就會 06/11 01:29
gmccntzx1: 產生一些因為當初mantissa位數不足表達部份的誤差 06/11 01:32
gmccntzx1: 參考: IEEE 754 floating point number 06/11 01:33