Conversión de número con parte fraccionaria

Re: Conversión de número con parte fraccionaria

de Gustavo Brown -
Número de respuestas: 0

Podes parar cuando tengas una cota del error inferior a la esperada. 

Supongamos que estas pasando de base B a base b. Si obtenes x dígitos en la parte fraccionaria el error será menor a b^(-x)

Si te interesa en obtener la representación exacta (ya sea porque tiene una cantidad finita de digitos en la base b o porque es periódico y queres encontrar el período) lo que podes hacer es ir aplicando el algoritmo de las notas.

Cada vez que extraes un digito te volves a quedar con la parte fraccionaria. Si en algún momento llegas a tener parte fraccionara = 0 es porque obtuviste la representación exacta del número. De ahí en adelante solo vas a extraer 0 como dígitos.

Por ejemplo suponete que estas pasando de la base 10 a la base 2 la siguiente fracción 0,625

Aplicamos el algoritmo:

0,625 * 2 = 1,25  (extraigo un 1)
0,25 * 2 = 0,5 (extraigo un 0)
0,5 * 2 = 1,0 (extraigo un 1)
y ahora quede con 0,0 por lo tanto ya voy a seguir sacando infinitos 0 y la representación exacta del número era 0,101


Por otro lado si la parte fraccionaria que obtenes ya apareció previamente es porque el número es periódico en la base b. Para encontrar el período basta ver la secuencia de digitos obtenidos desde la primera vez que apareció esa fracción.

Saludos,
  Gustavo