Fórumok
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.)
Ennyike, bizony.
OP: ezt olvasd el: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
Í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.