Hacker News new | ask | show | jobs
by tialaramex 360 days ago
It's not so much the need for arbitrary storage, the problem is that even easy rationals can't be expressed in the IEEE floats

Take realistic::Rational::fraction(1, 3) ie one third. Floats can't represent that, but we don't need a whole lot of space for it, we're just storing the numerator and denominator.

If we say we actually want f64, the 8 byte IEEE float, we get only a weak approximation, 6004799503160661/18014398509481984 because 3 doesn't go neatly into any power of 2.

Edited: An earlier version of this comment provided the 32-bit fraction 11184811/33554432 instead of the 64-bit one.