From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | Gray <gray(at)ms-irk(dot)ru> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5150: math bug |
Date: | 2009-10-31 03:10:02 |
Message-ID: | 603c8f070910302010l5b469ff8v89a2e6e64e74f0de@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Fri, Oct 30, 2009 at 1:39 AM, Gray <gray(at)ms-irk(dot)ru> wrote:
>
> The following bug has been logged online:
>
> Bug reference: 5150
> Logged by: Gray
> Email address: gray(at)ms-irk(dot)ru
> PostgreSQL version: 8.2.6
> Operating system: i686-pc-linux-gnu
> Description: math bug
> Details:
>
> select 1/3*3,(1.0/3.0)*3.0,floor((1.0/3.0)*3.0);
>
> returns
> 0, 1, 0
Well, the first answer is correct, because 1/3 is a request for
integer division, so you get 0, and 0 * 3 is still zero.
I don't believe the second answer is really what you got, because
surely if you requested floating-point division the answer would be a
floating point number, not just 1. On pg 8.3.8, I get
0.999999999999999999990, which explains why the third answer comes out
to zero.
In general, floating point arithmetic is inaccurate and sucky. That
has nothing to do with PostgreSQL; it's just life.
http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
...Robert
From | Date | Subject | |
---|---|---|---|
Next Message | Pierre | 2009-10-31 03:21:06 | BUG #5155: Error compiling postgresql-8.5alpha2 |
Previous Message | Robert Haas | 2009-10-31 03:00:50 | Re: BUG #5149: Can't untar the src code file |