Új hozzászólás Aktív témák

  • kovisoft

    őstag

    válasz Janos46 #2444 üzenetére

    Nálam mondjuk a másodikat is végrehajtja, de alapvető szabály, hogy lebegőpontos számokat nem hasonlítunk == operátorral, mert a lebegőpontos számábrázolásnak véges a pontossága, így csak az garantálható, hogy a végeredményül kapott szám egy adott pontosságon belül lesz a matematikailag helyes végeredményhez. Itt egy példa, ami szemlélteti a fentieket, ennek matematikailag 1-et kellene adnia, de a lebegőpontos számábrázolás miatt nem annyi lesz, csak közelítőleg:

    >>> x=1.0
    >>> x=x/3.0-1.0
    >>> x=(x+1.0)*3.0
    >>> x
    0.9999999999999998


    A te példádban szereplő 5+5 esetében nem ez a helyzet (nálam legalábbis), de attól még érdemes lecserélni az == operátort egy valamilyen 10-epszilon és 10+epszilon közötti vizsgálatra. A helyedben én külön-külön kiíratnám a változók és == kifejezések értékét, hogy lásd, min csúszik el a dolog.

Új hozzászólás Aktív témák