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.
Köszi!
Tényleg jól működik SQL d 3 esetén.
Esetleg van tapasztalatod arról, hogy az eddig SQL d 1-ben használtat ha átállítom 3-ra, akkor lesz valami problémám?
Misi
A dátumokat tárolja másképp, lehetőséged van foglalt nevű vagy ékezetes mezőnevek használatára ill. a delphi-s sqlexplorer nem tudja kezelni.