Rational
An adapter (wrapper) for a floating point number which, within a given precision, will attempt to display as a fraction of two integers. Normal math operators may be used on rationals, and the result will be a rational. If a rational contains an irrational number, the precision test will fail and the number will display as floating point.
Useful for working out just intonation or other ratio-based tuning systems.
Creation:
Rational(1.5)
1.5.asRational
3 /% 2
All the above display "3/2."
Math:
a = 3 /% 2;
b = 5 /% 4;
a+b // == 11/4
a-b // == 1/4
a*b // == 15/8
a/b // == 6/5
a + 2.sqrt // == 2.9142135623731
a + 2.sqrt - 2.sqrt // == 3/2