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