Я знаю, что этот вопрос был давным-давно, но я подумал, что люди, вероятно, все еще ищут что-то подобное, поэтому я решил упомянуть некоторые вещи, о которых следует помнить, делая это, так как я попытался написать код и в конце концов передумал использовать долгое деление и поиск места повторения, когда вы получаете остаток после деления на него. Сначала я пытался использовать метод, предложенный Антсом Аасмой.
Я пытался получить вывод, такой как этот, для 1/7, так как моя функция пыталась вывести строку, которую можно было бы использовать в качестве ответа на вопрос;
«0.142857 142857 ...»
Десятичные дроби, такие как 1/7, очень легко найти с помощью метода, предоставленного Антсом Аасмой, однако это становится болезненным, когда вы пытаетесь что-то, например, 1/35 - это нельзя разделить на число, полное 9-х. Прежде всего, любые знаменатели должны иметь любые коэффициенты 10, то есть разделить все 5 и 2, преобразуя дробь, например, от 1/35 до 0,2 / 7
.
Для дроби, такой как 1/70, я считаю, что лучший способ - это найти 1/7, а затем поставить 0 после десятичного знака. Для 1/35 вы должны преобразовать его в 0,2 / 7, а затем в 2/7 с 0 между повторяющейся частью и десятичной точкой.
Просто пара советов, которые следует помнить при использовании предложенного Антсом Аасмой метода.