Re: Precision problems with float8

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: Precision problems with float8
Дата
Msg-id 20011116084151.N18816-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на Re: Precision problems with float8  (Gabriel Fernandez <gabi@unica.edu>)
Список pgsql-general
On Fri, 16 Nov 2001, Gabriel Fernandez wrote:

> Hi Stephan,
>
> Here I send a short script to show the problem when using the float8 in
> additions or substractions, etc.
>
> Just execute it and look at the output. It just creates a table
> ('prova') which has the 'amount' column with values with only two
> decimal places, but the sum(amount) has 10 decimal places.
>
> Just look at the output of the script and you'll see:
> In the set of data I send to you, you can see that the 10th decimal
> appears just when we add the last amount. So when it calculates 84193.26
> + 4346.44 the result is 88539.7000000001, given that the 84193.26  is
> the sum(amount) just before adding the last amount.
>
> I hope this will be enough to show the problem.

First, float8 is not an exact numeric.  I upped the output precision in my
copy of postgres to more digits, and I get:


            ?column?
---------------------------------
 select sum(amount) from prova ;
(1 row)

          sum
-----------------------
 88539.700000000098953
(1 row)

                      ?column?
----------------------------------------------------
 select sum(amount) from prova where code <> 3078 ;
(1 row)

          sum
-----------------------
 84193.260000000023865
(1 row)

                ?column?
-----------------------------------------
 select * from prova where code = 3078 ;
(1 row)

 code |        amount
------+-----------------------
 3078 | 4346.4399999999995998
(1 row)


----

Basically, you should not expect exact numeric answers from floats.
Anything you do should be to a reasonable number of significant digits
or decimal places and you should drop/ignore everything past that.



В списке pgsql-general по дате отправления:

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: index on numbers not honoured
Следующее
От: "Aasmund Midttun Godal"
Дата:
Сообщение: Re: pgsql and large tables