top 40 comments

sorted by: hot top controversial new old
[–] 48 points 1 year ago* (12 children)

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

  • source
  • hideshow 12 child comments
  • [–] 27 points 1 year ago (8 children)

    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.

  • source
  • parent
  • hideshow 8 child comments
  • [–] 12 points 1 year ago (7 children)

    What's the right way to do money math without floats?

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 37 points 1 year ago (3 children)
  • [–] 6 points 1 year ago* (last edited 1 year 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".

  • source
  • parent
  • [–] 8 points 1 year ago* (last edited 1 year 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.

  • source
  • parent
  • [–] 15 points 1 year ago* (3 children)

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

  • source
  • hideshow 3 child comments
  • [–] 11 points 1 year ago (2 children)

    You can also have a type which does it. Raku has a Rational type for this.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 13 points 1 year ago (3 children)
  • [–] [S] 28 points 1 year ago (2 children)
  • [–] 8 points 1 year ago (5 children)

    unrelated but the image shows so low res (86x96) that it's unreadable, is this different for everyone else?

    what mine shows - https://eviltoast.org/pictrs/image/44915c44-8836-4961-bd06-a45bba04408a.jpeg

  • source
  • hideshow 5 child comments
  • [–] [S] 9 points 1 year ago (4 children)

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

    just pict-rs things I guess 🤷

  • source
  • parent
  • hideshow 4 child comments
  • [–] 5 points 1 year ago (3 children)

    hmm very weird. i also tried wget and it grabs the same 86x96 file. https://termbin.com/gvg9

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 1 year ago* (last edited 1 year ago) (2 children)

    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?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 7 points 1 year ago

    I think you could argue that they're actually trying to mimic real numbers.

  • source
  • [+] -6 points 1 year ago (12 children)

    It's not "mimicking" a fraction. It is a fraction.

    It's also the most compact fraction representation around.

  • source
  • hideshow 12 child comments
  • [–] 19 points 1 year ago (11 children)

    Show how 1/3 can be precisely represented in floating point.

  • source
  • parent
  • hideshow 11 child comments
  • [–] 35 points 1 year ago (2 children)

    fl_numerator = 1

    fl_denominator = 3

    And division is a "stretch goal" once we get funding.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 year ago (6 children)

    Do you have a computer type that can represent the entire rational set?

  • source
  • parent
  • hideshow 6 child comments
  • [–] 4 points 1 year ago (2 children)

    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.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 1 year ago (2 children)

    No. They all need to mimic certain numbers.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 year ago (1 child)

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

    What exactly is being mimicked?

  • source
  • parent
  • hideshow 1 child comment