作者SuperBu (SonGohan)
看板Python
标题[问题] python int()以及//问题
时间Sun Jun 10 18:39:31 2018
今天在刷leetcode时卡了一个小小问题许久
请问a=int(a/10) 和 a=a//10
这两者之间为什麽会不一样呢~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.214.165.119
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1528627174.A.A8A.html
1F:→ gmccntzx1: 遇到什麽样的问题,可否举例? 06/10 18:48
2F:→ gmccntzx1: 另外,`//`是floor division 06/10 18:48
3F:→ djshen: 就不一样阿 遇到负的就会差1 06/10 20:19
4F:推 cutekid: 推楼上, -5 // 2 = -3 , int( -5 / 2 ) = -2 06/10 20:46
5F:→ gmccntzx1: 帮@cutekid补充, py2没有做 06/10 21:05
6F:→ gmccntzx1: `from __future__ import division`前, int(-5/2)是-3 06/10 21:05
7F:→ SuperBu: 就是一个例如非常大的正整数ex:192838495837294827293做 06/11 00:19
8F:→ SuperBu: 出来的结果会不一样 06/11 00:19
9F:→ djshen: precision 06/11 01:21
10F:→ gmccntzx1: 我猜你的环境是py3,或是像我上面所说的已经引入true 06/11 01:25
11F:→ gmccntzx1: division了. 06/11 01:25
12F:→ gmccntzx1: 当你用true division时,出来的结果的型别会是float 06/11 01:25
13F:→ gmccntzx1: 而float的mantissa不一定可以在有限位数内还原你的数字 06/11 01:29
14F:→ gmccntzx1: 所以当你将该floating number再次转成integer後,就会 06/11 01:29
15F:→ gmccntzx1: 产生一些因为当初mantissa位数不足表达部份的误差 06/11 01:32
16F:→ gmccntzx1: 参考: IEEE 754 floating point number 06/11 01:33