# Decimal to Fraction

## Step 7: The subtraction trick for converting repeating decimals to fractions

Consider the repeating decimal number:
`r = 3.[14] = 3.141414...`
I don't have to multiply this by an infinite power of 10. It turns out that I only need to multiply by a power of ten with the same magnitude as the length of the repeating part.

For this example the repeating sequence, [14], is n=2 digits long. So I multiply r by 10n = 102 = 100 and get
`100r = 314.[14] = 314.141414...`
The reason I've explicitly written equations for r and 100r, is that I want to subtract one equation from the other and make the messy repeating decimal disappear, leaving me with just an integer:
`(100r - r) = 99r = 314.[14] - 3.[14] = 311`
Then I solve for r.
`r = 311/99`
This is already reduced, since 311 and 99 are coprime, since 311=311 and 99=3*3*11.

Here's another example:
`r = 0.[142857]`
What is the length of the repeating part? The repeating sequence is 6 digits long, so multiply r by 106, and get
`1000000r = 142857`
Then subtract these two equations and solve for r.
```(1000000r - r) = 999999r = 142857
r = 142857/999999```
Reducing this fraction is going to take some doing. Again I am using Octave's "factor()" and "gcd()" commands to help with the heavy lifting.

It turns out that:
`r = 142857/999999 = (3*3*3*11*13*37)/(3*3*3*7*11*13*37) = 1/7`

So what about those occasions when there is a sequence to the right of the decimal that does not repeat, followed by a sequence that does repeat? I think that is the the most general case, and the hardest decimal-to-fraction problem to solve. For example:
`r= 3.45[6]`
There are couple of ways to do this one. One way is to find 1000r, 100r, and then subtract these to get 900r.
```     r=  3.45[6]
1000r = 3456.[6]
100r =  345.[6]
900r = 3111
r = 3111/900 = 3*1037/3*300 = 1037/300```
Remove these ads by Signing Up