• alp@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    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
      0
      ·
      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
          ·
          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.

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

            Had to think about it, but yeah, I guess, you can’t do division or non-integer multiplication with integer cents, as standard integer math always rounds downwards and it forces you to round after every step.
            You could convert to a float for the division/multiplication and you do get more efficient addition/subtraction as well as simpler de-/serialization, but in most situations, it’s probably less trouble to use decimals.