Path: csiph.com!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.036 X-Spam-Evidence: '*H*': 0.93; '*S*': 0.00; 'interpreter': 0.05; 'say,': 0.05; 'float': 0.07; 'constructor': 0.09; 'rounds': 0.09; 'evaluates': 0.16; 'exactly?': 0.16; 'skip:6 30': 0.16; 'terribly': 0.16; 'two,': 0.16; 'wrote:': 0.18; 'skip:1 30': 0.19; 'fraction': 0.24; 'propose': 0.24; 'decide': 0.24; 'mon,': 0.24; 'least': 0.26; 'header:In-Reply-To:1': 0.27; 'point': 0.28; 'important.': 0.30; 'message-id:@mail.gmail.com': 0.30; 'division': 0.31; 'equal': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'choosing': 0.36; 'possible': 0.36; 'should': 0.36; 'whatever': 0.38; 'to:addr:python-list': 0.38; 'pm,': 0.38; 'rather': 0.38; 'to:addr:python.org': 0.39; 'how': 0.40; 'ian': 0.60; 'choose': 0.64; 'sum': 0.64; 'here': 0.66; 'between': 0.67; 'jul': 0.74; 'float,': 0.84; 'subject:results': 0.91; 'obtained': 0.96; '2013': 0.98 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=1sWRS7a+nLsYhaJf7fjlpcCSg6YbVhzh+AE70km6xvw=; b=Ve/58nBkZsDThA+pG7UqlalagKRAKebOXXPFfBsyMlRKHQ4Jm1zOEovACtK8YQyDGK kk6zZkTuzpHnmIlskssD6lQ2qmF4gt4qjmtk3jwHgWwk1xZdbxLcHpgNqq4pIcBTcaDX LrfEjcFrBstaRrKaXOHOmyE4zT77POKygdQx7gQf0lIp12a3KnacbfsAEn7bIsjBVetd 8rNrN6Nbbm/QYp1udLYSMmj6cNYhiNpqKvvUlrvRHAjKliyWJi+9I2NzbLb2FPuxh3+1 RyLJWTDSriIzaMqy/46e8UmbubPbfH2qDKHgVe+4otn7OI+88RSMf3srq+fPQCFlrcf6 xkOQ== X-Received: by 10.68.129.138 with SMTP id nw10mr37605910pbb.158.1375126451827; Mon, 29 Jul 2013 12:34:11 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <51f68d9c$0$30000$c3e8da3$5496439d@news.astraweb.com> <51F693B4.9000201@mrabarnett.plus.com> From: Ian Kelly Date: Mon, 29 Jul 2013 13:33:31 -0600 Subject: Re: Unexpected results comparing float to Fraction To: Python Content-Type: text/plain; charset=ISO-8859-1 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 16 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1375126463 news.xs4all.nl 15961 [2001:888:2000:d::a6]:45925 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:51479 On Mon, Jul 29, 2013 at 12:16 PM, Rotwang wrote: > On 29/07/2013 17:40, Ian Kelly wrote: >> At the point where the float is exactly equal to the value you get >> from the floating-point division 1/3. > > > But the interpreter has no way of knowing that the value 1/3 that's been > passed to the Fraction constructor was obtained from the division 1/3, > rather than, say, 100000000000000001/300000000000000000 or > 6004799503160661/18014398509481984. How do you propose the constructor > should decide between the many possible fractions that round to the same > float, if not by choosing the one that evaluates to it exactly? It should choose the fraction with the least terms that rounds to the float. Whether "least" here means least numerator, least denominator, least sum of the two, or whatever is not terribly important.