Dízima periódica em fração

Oi alguém saberia onde posso encontrar um algoritmo, ou código java para transformar dízimas periódicas em frações ? do tipo 29/900, 5/10, 8/9, 22/990, etc…

Não conheço algoritmo para isso, o mais próximo q sei seria convertendo o numero em string, identificando a qtd de casas apos a virgula, multiplicando e dividindo por 10 elevado a qtd e dividindo pelo MDC.

Algo mais ou menos assim:

    float numero;
    int[] fracao = new int[2]; // fracao[0] / fracao[1]

    String numeroString = numero;
    int indiceDoPonto = numeroString.indexOf('.');
    if (indiceDoPonto > 0) {
        int casas = numeroString.length - indiceDoPonto - 1;
        fracao[1] = Math.pow(10, casas);
        fracao[0] = numero * fracao[1];
        
        // MDC - Maximo divisor comum, para simplificar a fracao
        int mdc = MDC(fracao[0], fracao[1]);
        fracao[0] /= mdc;
        fracao[1] /= mdc;
    } else {
        fracao[0] = numero;
        fracao[1] = 1;
    }

No caso de dízimas, seria mais complicado pois identificar quando for dízima não é simples

    System.out.println((1f / 3f));
    // Imprime 0.33333334 q não é dizima