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.