Issue 17821: Different division results with / and // operators with large numbers (original) (raw)

Created on 2013-04-23 09:19 by Philippe.Rouquier, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (5)
msg187623 - (view) Author: Philippe Rouquier (Philippe.Rouquier) Date: 2013-04-23 09:19
Hi, the following statement yields different results in python2 and python3: 284397269195572115652769428988866694680//17 - int(284397269195572115652769428988866694680/17) In python3 it yields: 309657313492949847071 In python2 it yields: OL Python2's result seems to be correct as (284397269195572115652769428988866694680//17) and (int(284397269195572115652769428988866694680/17)) should return the same result (as far as I understand). With smaller numbers, this difference in results does not appear with python3. Note: I noticed this, while working on RSA; 284397269195572115652769428988866694680 is (p-1)(q-1) and 17 is e. I just mention this in case it could help. I used linux version 3.3.3.0 and 2.7.3 for the tests on a 64 bits processor. Sorry if I am missing something here.
msg187624 - (view) Author: Richard Oudkerk (sbt) * (Python committer) Date: 2013-04-23 09:55
In Python 3 "/" gives float division, whereas in Python 2 it is integer division, the same as "//".
msg187625 - (view) Author: Richard Oudkerk (sbt) * (Python committer) Date: 2013-04-23 10:01
Just to clarify, if you use float division then you get rounding errors. 309657313492949847071 is a rounding error: >>> x = 284397269195572115652769428988866694680//17 >>> x - int(float(x)) 309657313492949847071L
msg187626 - (view) Author: Philippe Rouquier (Philippe.Rouquier) Date: 2013-04-23 11:26
Does your comment mean that this is bug should be closed as notabug since anyone wanting to avoid such rounding error should use // operator?
msg187628 - (view) Author: Richard Oudkerk (sbt) * (Python committer) Date: 2013-04-23 11:47
Yes.
History
Date User Action Args
2022-04-11 14:57:44 admin set github: 62021
2013-04-23 11:47:14 sbt set status: open -> closedresolution: not a bugmessages: + stage: resolved
2013-04-23 11:26:02 Philippe.Rouquier set messages: +
2013-04-23 10:01:33 sbt set messages: +
2013-04-23 09:55:58 sbt set nosy: + sbtmessages: +
2013-04-23 09:25:08 ezio.melotti set nosy: + mark.dickinson
2013-04-23 09:19:59 Philippe.Rouquier create