| От | 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 по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера