• gravitas_deficiency@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    46
    arrow-down
    1
    ·
    edit-2
    2 days ago

    Look at what they need to mimic a fraction inaccurately.

    The fundamental mathematical nature of how binary floating point values are stored means that extremely straightforward and rational (in the mathematical sense of the term) base-10 arithmetic can surprisingly often yield results that are irrational (again, mathematically) in binary - hence why you’ll sometimes see a result of 3.000000000101325 or something like that in places where you’d expect the result to be simply 3.0

    • jjjalljs@ttrpg.network
      link
      fedilink
      arrow-up
      27
      ·
      2 days ago

      Yep. Open your browser’s console and do .1 + .2 and you get 0.30000000000000004.

      One of the reasons not to use floating point when working with money.

        • SmoothLiquidation@lemmy.world
          link
          fedilink
          English
          arrow-up
          12
          ·
          2 days ago

          As other people mentioned, things like the decimal structure works well, but you can also just use an int to store how many pennies something costs and convert it to dollars for display.

        • jjjalljs@ttrpg.network
          link
          fedilink
          arrow-up
          10
          ·
          2 days ago

          Use a dedicated data type or library. Some languages also have something like python’s Decimal type

          >>> .1 + .2
          0.30000000000000004
          >>> Decimal(".1") + Decimal(".2")
          Decimal('0.3')
          
        • JakenVeina@midwest.social
          link
          fedilink
          arrow-up
          6
          ·
          edit-2
          2 days ago

          The same IEEE spec that introduced base-2 floating point models was updated in 2008 to include some base-10 models that eliminate these issues. Many languages already support them natively, as well as most database engines. Otherwise, you can probably find third-party-library support.

          If you don’t have access to an IEEE decimal implementation, or if you just wanna be a rulebreaker, the common strategy is to just store only plain integers, and the precision level you want. So, say, if you’re just dealing with simple american dollars, you’d just make sure to always interpret the integer value as “cents”. If you need more precision than that, you might do “millicents”.

    • CanadaPlus@lemmy.sdf.org
      link
      fedilink
      arrow-up
      7
      ·
      edit-2
      20 hours ago

      It’d be more correct to say round or unround.

      Irrational specifically means infinite non-repeating decimal values, or equivalently that a number can’t be represented as any fraction. This is independent of number system.

      Sometimes “more irrational” is used as a way of saying further from any small-integer fraction by some measure, but that doesn’t really work here.

    • juliebean@lemmy.zip
      link
      fedilink
      arrow-up
      4
      ·
      1 day ago

      i see what you’re trying to say, but that’s not what rational and irrational means (mathematically).

  • Grandwolf319@sh.itjust.works
    link
    fedilink
    arrow-up
    16
    ·
    edit-2
    2 days ago

    Cause fractions can be figured out in context. You can store the numerators and have the denominator as a constant in the code.

    • orhtej2@eviltoast.orgOP
      link
      fedilink
      English
      arrow-up
      9
      ·
      2 days ago

      The link you gave shows hires for me. Can you try loading in incognito?

      just pict-rs things I guess 🤷

        • wheezy@lemmy.ml
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          1 day ago

          Weird. My wget gives full resolution. No redirect options or anything. Only difference is the IP resolve for you is in Korea and mine is in the US. Likely just closest server resolve.

          Try curl with -L set?

          Or I’d be curious if something like gallery-dl resolves the image in finding the higher resolution and what the difference is if it does.

          Maybe it’s a DNS issue if not a redirect issue.

          My guess is DNS. Try with another provider?

  • marcos@lemmy.world
    link
    fedilink
    arrow-up
    8
    arrow-down
    13
    ·
    2 days ago

    It’s not “mimicking” a fraction. It is a fraction.

    It’s also the most compact fraction representation around.

        • calcopiritus@lemmy.world
          link
          fedilink
          arrow-up
          4
          ·
          1 day ago

          Yes. Have a structure with 2 BigInts. Treat one as the numerator. The other as denominators.

          It might not be efficient or fast. But it is possible.

            • calcopiritus@lemmy.world
              link
              fedilink
              arrow-up
              2
              arrow-down
              1
              ·
              edit-2
              21 hours ago

              Yes that is correct. A BigInt represents the entire integer set.

              Rational numbers are defined by just 2 integers. Therefore, 2 BigInts represent the entire rational set.

          • marcos@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            21 hours ago

            So, you have a notation that can represent the entire rational set?

            What exactly is being mimicked?

            • WhiskyTangoFoxtrot@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              21 hours ago

              So, you have a notation that can represent the entire rational set?

              No. That’s not what the meme is about, and that’s not what we’re arguing about.

              What exactly is being mimicked?

              Fractions.

    • aaaaaaaaargh@feddit.org
      link
      fedilink
      arrow-up
      3
      ·
      2 days ago

      Agreed, but in terms of efficiency wouldn’t it make more sense to put the sign bit right before the mantissa in order to keep the memory layout more consistent with powers of two?

      • anton@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        13
        ·
        2 days ago

        Having the sign bit in front, makes them compare like sign-bit-integers and if they are compared/sorted like 2s-complement integers, the negatives are reversed but still come after the positives.