I think it is main problem. Try

select sum(cast(33.08 as float) - cast(36.09 as float));

you get

        sum
-------------------
 -3.01000000000001

Better is to use numeric type if you don't have reason to use float/double. See http://www.postgresql.org/docs/8.3/static/datatype-numeric.html#DATATYPE-FLOAT

It describes your problem.

                Zdenek


Mirosław Marek napsal(a):
wv and wb are defined as double precision

Mirek

Zdenek Kotala pisze:
mirek napsal(a):
The following bug has been logged online:

Bug reference:      3991
Logged by:          mirek
Email address:      [EMAIL PROTECTED]
PostgreSQL version: 8.2.4
Operating system:   Linux fedora(for work) and windows(for development)
Description:        pgsql function sum()
Details:
I saw a very strange behavior when i used function SUM() in query (used
inside pg function), query:

select magazyn, ciag, numer, datawp, vat, sum(wnetto-wnettop) as wn,
sum(wvat-wvatp) as wv, sum(wbrutto-wbruttop) as wb from vzk_pozycjezinfo
where magazyn = $1 and ciag = $2 and numer = $3 and datawp = $4
group by magazyn, ciag, numer, datawp, vat order by magazyn, ciag, numer, datawp, vat
vzk_pozycjezinfo is view

problem is in: sum(wvat-wvatp) where field in view wvat = 33.08 and wvatp =
36.09 Result is -3.01000000000001
If I ask postgres manualy: select sum(33.08 - 36.09)
result is ok -3.01
Now I fix it with round function but i think that is a bug.

How are wv and wb attribute defined? Are they number or flout/double?


        Zdenek


__________ NOD32 Informacje 2903 (20080226) __________

Wiadomosc zostala sprawdzona przez System Antywirusowy NOD32
http://www.nod32.com lub http://www.nod32.pl







---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

Reply via email to