Convert decimal number to rational
This page is the answer to the task Convert decimal number to rational in the Rosetta Code.
Contents
Description (from Rosetta Code)
The task is to write a program to transform a decimal number into a fraction in lowest terms.
It is not always possible to do this exactly. For instance, while rational numbers can be converted to decimal representation, some of them need an infinite number of digits to be represented exactly in decimal form. Namely, repeating decimals such as 1/3 = 0.333... Because of this, the following fractions cannot be obtained (reliably) unless the language has some way of representing repeating decimals:
Acceptable output:
Finite decimals are of course no problem:

Solutions
Fōrmulæ Math.Arithmetic.Rationalize expression of the Standard arithmetic package converts from deciaml numberts to rational in lower terms.
Case 1. Without repeating digits
Case 2. With repeating digits
Math.Arithmetic.Rationalize can convert from decimal numbers with infinite number of repeating digits. The second arguments specifies the number of repeating digits.
In the following examples, a conversion of the resulting rational back to decimal is provided in order to prove that it was correct.