Как узнать повторяющуюся десятичную дробь?
Я уже знаю, когда дробь повторяет десятичные дроби. Вот функция.
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;
}
}
Теперь я пытаюсь получить повторный номер. Я проверяю этот веб-сайт: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);
}
Но я действительно понял, что некоторые числа имеют частичную десятичную конечную, а затем бесконечную. Например: 1/28
Знаете ли вы лучший способ сделать это? Или Алгоритм?