MySQL select :)
Karel Zak
zakkr na zf.jcu.cz
Čtvrtek Červen 27 13:56:03 CEST 2002
On Thu, Jun 27, 2002 at 01:27:41PM +0200, Martin Sittek wrote:
> On 27.06.02, Novák Jiří wrote:
> > Programator se nikdy! nepokousi porovnavat dve cisla s PLOVOUCI RADOVOU
> > CARKOU, protoze dve stejna cisla NEMUSI byt stejne representovana v pameti.
> > Lisi se pak nejakou setinkou na nejakem nevyznamnem miste, ale porovnani
> > nesedi mozno pouzit tes abs(val1-val2)<0.0000001 atd.
> >
> > zvolte jiny datovy typ (pro penezni castky napr typ money ) nebo se
> > porozhlidnete po SQL funkci ktera vysledek zaokrouhli (nebo zverstvo ->
> > prevede na retezec a porovna)
> >
> > Stejne problemi jsou i na jinych SQL.
> > na MS SQL je treba typ money - 64-bitovy int kde posledni 4 mista se berou
> > jako desetinna
> >
> > pokud mate tech hodnot tak 10 000 skuste si je treba secist s ruzne
> > nastavenym razenim a uvidite co dostanete
>
> Tady bych si dovolil jeden skromný dotaz, o tomto _fenomenu_ :-) že
> reálná čísla (například finanční) se ukládají v DB do typů money,
> nebo numeric/deciaml vím poměrně dlouho a chápu i důvod proč se tak
> činí. Ovšem nějak pořád nechápu, že když se s těmi čísly chce pracovat,
> tak se stejně musí převést na nějaký reálný typ (float, double) a pak
Pokud by to tak bylo tak, aby asi nemelo cenu nejaky numeric
vymyslet. Coz? To se na zadny realny typ neprevadi, ono by to ani
nemuselo jit u nekterych opravdu dlouhych cisel. Napr. v PostgreSQL
se s numeric pracuje jako s polem cislic ve stringu a pripadne
vypocty jsou pak delany v nejakem cyklu kde se to co je treba postupne
aplikuje na vsechna ta cisla (pekne jsem to zjednodusil, no
matematik nejsem). Jak je to presne se muzete podivat do zdrojaku.
Zadny float/double tam nenajdete.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Další informace o konferenci Test