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

作者: SuperBu (SonGohan)   2018-06-10 18:39:31
今天在刷leetcode時卡了一個小小問題許久
請問a=int(a/10) 和 a=a//10
這兩者之間為什麼會不一樣呢~
作者: gmccntzx1 (o.O)   2018-06-10 18:48:00
遇到什麼樣的問題,可否舉例?另外,`//`是floor division
作者: djshen (djshen)   2018-06-10 20:19:00
就不一樣阿 遇到負的就會差1
作者: cutekid (可愛小孩子)   2018-06-10 20:46:00
推樓上, -5 // 2 = -3 , int( -5 / 2 ) = -2
作者: gmccntzx1 (o.O)   2018-06-10 21:05:00
幫@cutekid補充, py2沒有做`from __future__ import division`前, int(-5/2)是-3
作者: SuperBu (SonGohan)   2018-06-11 00:19:00
就是一個例如非常大的正整數ex:192838495837294827293做出來的結果會不一樣
作者: djshen (djshen)   2018-06-11 01:21:00
precision
作者: gmccntzx1 (o.O)   2018-06-11 01:25:00
我猜你的環境是py3,或是像我上面所說的已經引入truedivision了.當你用true division時,出來的結果的型別會是float而float的mantissa不一定可以在有限位數內還原你的數字所以當你將該floating number再次轉成integer後,就會產生一些因為當初mantissa位數不足表達部份的誤差參考: IEEE 754 floating point number

Links booklink

Contact Us: admin [ a t ] ucptt.com