Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to know the repeating decimal in a fraction?

I already know when a fraction is repeating decimals. Here is the function.

public bool IsRepeatingDecimal
{
    get
    {
        if (Numerator % Denominator == 0)
            return false;

        var primes = MathAlgorithms.Primes(Denominator);

        foreach (int n in primes)
        {
            if (n != 2 && n != 5)
                return true;
        }

        return false;
    }
}

Now, I'm trying to get the repeated number. I'm checking this web site: http://en.wikipedia.org/wiki/Repeating_decimal

public decimal RepeatingDecimal()
{
    if (!IsRepeatingDecimal) throw new InvalidOperationException("The fraction is not producing repeating decimals");

    int digitsToTake;
    switch (Denominator)
    {
        case 3:
        case 9: digitsToTake = 1; break;
        case 11: digitsToTake = 2; break;
        case 13: digitsToTake = 6; break;
        default: digitsToTake = Denominator - 1; break;
    }

    return MathExtensions.TruncateAt((decimal)Numerator / Denominator, digitsToTake);
}

But I really realized, that some numbers has a partial decimal finite and later infinite. For example: 1/28

Do you know a better way to do this? Or an Algorithm?

like image 742
Darf Zon Avatar asked Jan 20 '12 18:01

Darf Zon


People also ask

How do you determine if a fraction is a repeating decimal?

Just divide the numerator by the denominator . If you end up with a remainder of 0 , then you have a terminating decimal. Otherwise, the remainders will begin to repeat after some point, and you have a repeating decimal.

What is 0.1212 Repeating as a fraction?

Multiply the decimal by a power of 10 that will move the repeating digit/s to the left of the decimal point. Use 100 since there are 2 digits repeating. Divide the repeating digits by the difference between the power of 10 used to multiply the decimal and 1. Therefore, the fraction form of 0.1212 is 433.

What is 0.22 repeating as a fraction?

Practice Problem Answers. 0.2222… is equal to the fraction with 2 in its numerator (since that's the single number after the decimal point that's repeating over and over again) and 9 in its denominator. In other words, 0.2222… = 2/9.

What is 0.33333 repeating as a fraction?

So we can see that our original decimal of 0.333333... is equal to the fraction 1/3.

Is 0.333 a repeating decimal?

=13 is a non-terminating but repeating number that can be written in the form of pqwhere p and q belong to the set of integers and q is not equal to 0, making it a rational number.


1 Answers

A very simple algorithm is this: implement long division. Record every intermediate division you do. As soon as you see a division identical to the one you've done before, you have what's being repeated.

Example: 7/13.

1. 13 goes into   7 0 times with remainder  7; bring down a 0.
2. 13 goes into  70 5 times with remainder  5; bring down a 0.
3. 13 goes into  50 3 times with remainder 11; bring down a 0.
4. 13 goes into 110 8 times with remainder  6; bring down a 0.
5. 13 goes into  60 4 times with remainder  8; bring down a 0.
6. 13 goes into  80 6 times with remainder  2; bring down a 0.
7. 13 goes into  20 1 time  with remainder  7; bring down a 0.
8. We have already seen 13/70 on line 2; so lines 2-7 have the repeating part

The algorithm gives us 538461 as the repeating part. My calculator says 7/13 is 0.538461538. Looks right to me! All that remains are implementation details, or to find a better algorithm!

like image 110
Patrick87 Avatar answered Oct 04 '22 22:10

Patrick87