Mysqli float select

Sziasztok!

Mysqli queryben float mező értéket hogyan lehetne pontosan lekérdezni? A select where nem működik, ha CAST-ot használok is volt hogy nem találta meg az, amit. Ki mit javasolna, hogy 193.2, vagy 4117.3 értékre pl. megegyezőnél találatot kapjak?

Hozzászólások

Szia!

A bemeneti értéket és a mezőt is CAST-oltad?

Pl.:

SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(193.2 AS DECIMAL);

----------------------------------------
o.-

A probléma nem MySql-specifikus, egyszerűen a lebegőpontos számábrázolás nem pontos. Legjobb lenne megváltoztatni a mező típusát. (Mármint, ha tényleg pontos értékek kellenek.)

Így van, ahogy NevemTeve mondja. Lebegőpontos számoknál nem akarunk egyenlőséget vizsgálni, mert nem működik. Helyette egy szám epszilon sugarú környezete esetén szoktuk azt mondani, hogy ha a másik szám benne van ebben a környezetben, akkor a két szám egyenlő. Ha pontos érték kell, akkor arra meg vannak a módszerek. BCD pár számjegy pontosságig, szövegként eltárolva, fixpontosként eltárolva az egész rész, és a törtrész, lehet választani.