• nous@programming.dev
    link
    fedilink
    arrow-up
    32
    ·
    2 years ago

    The lesson here is that floating point numbers are not exact and that you should never do a straight comparison with them. Instead check to see if they are within some small tolerance of each other. In python that is done with math.isclose(0.1 + 0.2, 0.3).

      • nous@programming.dev
        link
        fedilink
        arrow-up
        7
        ·
        2 years ago

        Decimal does come at a cost though, being slower than raw floats. When you don’t need precision but do need performance then it is still valid to use floats. And quite often you don’t need absolute precision for things.

      • SkyeStarfall@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        4
        ·
        edit-2
        2 years ago

        Be careful however, if you work with really large numbers this will absolutely tank your performance and eat up all your memory.

        There’s a reason floating point numbers exist. They are very good at what they do, at the cost of lower precision and being a bit more difficult to work with.