[问题] 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