Como posso transformar um número de ponto flutuante na fração mais próxima representada por um numerador de bytes e denominador?

Como posso escrever um algoritmo que recebe um número de ponto flutuante e tenta representá-lo com a maior precisão possível usando um numerador e um denominador, ambos restritos ao intervalo de um byte Java?

A razão para isso é que um dispositivo I2C quer um numerador e denominador, enquanto faria sentido dar um float.

Por exemplo,3.1415926535... resultaria em245/78, ao invés de314/100 ou22/7.

Em termos de eficiência, isso seria chamado em torno de três vezes no início do programa, mas depois disso não. Então, um algoritmo lento não étambém mau.

questionAnswers(6)

yourAnswerToTheQuestion