• alp@sh.itjust.works
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    I know this is a humor subreddit and this is a joke, but this problem wasted a huge week of mine since I was dealing with absurdly small numbers in my simulations. Use fsum from math library in Python to solve this people.

    • Dazawassa@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      One of my lecturers mentioned a way they would get around this was to store all values as ints and then append a . two character before the final one.

      • Knusper@feddit.de
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        Yeah, this works especially well for currencies (effectively doing all calculations in cents/pennies), as you do need perfect precision throughout the calculations, but the final results gets rounded to two-digit-precision anyways.

        • Hotzilla@sopuli.xyz
          link
          fedilink
          English
          arrow-up
          0
          arrow-down
          1
          ·
          1 year ago

          quite a horrible hack, most modern languages have decimal type that handles floating rounding. And if not, you should just use rounding functions to two digits with currency.

      • StarkillerX42@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        arrow-down
        8
        ·
        1 year ago

        Fixed point notation. Before floats were invented, that was the standard way of doing it. You needed to keep your equation within certain boundaries.

    • nous@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      1 year 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).