Firebird 1.5 esetén +10-2,552-6,112-1,336 != 0

Sziasztok!

Firebird 1.5 esetén van egy nagy problémám.

4 rekordom van a táblában, a kód mező értéke minden esetben "Alma", a db mezők (numeric 15,3) értéke rendre:
+10
-2.552
-6.112
-1.336

select sum(db) from tabla
látszólag visszaadja, hogy 0.000 azonban ha tárolt eljárásban dolgozom
vele, akkor a változó, amelybe betöltöm az értéket 2,22044604925031E-16-ot
vesz fel, vagyis egy nagyonpici számot, de nem 0-t.Tovább mentem a kétségbeesés útján:
select kod from tabla having sum(db) > 0

erre lehozza, hogy Alma!

select kod from tabla having sum(db) > 0.1

erre meg semmit! Persze a tények ismeretében nem csodálkozom rajta, csak nem értem :)

Találkozott már valaki ilyennel? Miért nem kerekít ilyenkor 3 tizedesre?
Mit lehet tenni? Folyton kerekítsek? Ettől nagyon belassulna a lekérdezés szerintem.

Várom az ötleteket.

Köszi!

Misi

Hozzászólások

Ezt írják erről:

In dialect 1 NUMERIC (15, 2) is stored internally as a double precision
number and may have rounding issues. See Data Definition Guide for details.

In dialect 3 NUMERIC (15, 2) is stored as an Int64 and will not have
rounding issues.