Hozzászólások
-
SzerzőBejegyzés
-
Ez a számábrázolás hibája lesz, valószínûleg. Olyasmi, mint amikor összeadsz zsebszámológéppel 1/3-ot (0,333333…) + 2/3-ot (0,666666…) az eredmény 0,999999… lesz és nem 1 (jobb esetben persze kerekít, és a 2/3-ad utolsó jegye 7, de régebbi/egyszerûbb típusok nem). Lebegõpontos mennyiségeket épp ezért nem így kell összehasonlítani, hanem megnézni, hogy a várt értéktõl való különbsége kisebb-e egy tetszõlegesen kicsi (pl. 10E-7 nagyságrendû) epszilontól. Ha igen, a két érték azonosnak tekinthetõ. Azaz pl. if ((a*B)-c)<10E-7) esetén már valószínûleg el fogja találni a progi.
szerk: kipróbáltam az eredetit, nekem ez jött ki:
EXECUTING:
/home/gabor/teszt
Most eltalEz a számábrázolás hibája lesz, valószínûleg. Olyasmi, mint amikor összeadsz zsebszámológéppel 1/3-ot (0,333333…) + 2/3-ot (0,666666…) az eredmény 0,999999… lesz és nem 1 (jobb esetben persze kerekít, és a 2/3-ad utolsó jegye 7, de régebbi/egyszerûbb típusok nem). Lebegõpontos mennyiségeket épp ezért nem így kell összehasonlítani, hanem megnézni, hogy a várt értéktõl való különbsége kisebb-e egy tetszõlegesen kicsi (pl. 10E-7 nagyságrendû) epszilontól. Ha igen, a két érték azonosnak tekinthetõ. Azaz pl. if ((a*B)-c)<10E-7) esetén már valószínûleg el fogja találni a progi.
[align=right][snapback]126866[/snapback][/align]Kösz, valami hasonló sejtésem volt, de tovább gombolyítva a kérdést:
ha van egy adatbázis, amibe bedolgzol és az adattáblába be van állítva az, hogy egy mezõ értéke = két másik mezõ szorzatával, akkor mi a helyzet. Mert így a tábla mindig vissza fogja utasítani a bevitelt, ha bármelyik mezõ értéke törtszám.Addig eljutottam, hogy az adattábla „sok” tört szorzatát elfogadja, de van egy mágikus szám: 65.13 * 21160; ezt az istenért nem veszi be.
Csak bízok benne, hogy van valami más trivi megoldás is.
Nem jön ki az eredmény.
-
SzerzőBejegyzés

legutóbbi hsz