Re: strange sum behaviour

Поиск
Список
Период
Сортировка
От Chris Mair
Тема Re: strange sum behaviour
Дата
Msg-id 1156879384.3590.4.camel@ultra.home.lan
обсуждение исходный текст
Ответ на strange sum behaviour  ("Andrew Baerg" <andrew.baerg@gmail.com>)
Список pgsql-general
> corp=# select amount from acc_trans where trans_id=19721 and chart_id=10019;
>  amount
> ---------
>     4.88
>    117.1
>  -121.98
> (3 rows)
>
> corp=# select sum(amount) from acc_trans where trans_id=19721 and
> chart_id=10019;
>          sum
> ----------------------
>  -1.4210854715202e-14
> (1 row)
>
>
> amount is defined as double precision. I noticed that if I cast amount
> as numeric, the sum comes out 0 as expected.

0.1 cannot be represented exactly using floating point numbers
(the same way as 1/3 cannot be represented exactly using decimal
numbers). You're bound to suffer from round-off errors.

Use numeric for exact, decimal math.

Bye, Chris.


--

Chris Mair
http://www.1006.org


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

Предыдущее
От: Ron Johnson
Дата:
Сообщение: Re: Anonymous stored procedures
Следующее
От:
Дата:
Сообщение: SQL Tuning