Obtener una fracción a partir de un número decimal.
  • Ayer se me vino a la mente esta pregunta: ¿como hago para transformar un número decimal en una fracción?

    Ejemplo: 0.5 => 1/2
                  0.33333333 => 1/3
                  7.85106383 => 369/47

    Sin complicarmela tanto se me ocurrió este algoritmo:

    Yo tengo un numero decimal X, y quiero expresarlo de la forma N/D donde N es e el númerador y D el denominador. Lo que quedaría:

    N/D = X

    Despejando N, nos quedaria:

    N = X*D

    El número que busco tiene que ser la mínima expresión fraccionaria (como 1/2 = 2/4 = 3/6 = ... me quedo con 1/2). Entonces lo único que tengo que hacer es ir dándole valores a D (a partir de 2, o 1 en el caso que el número que se ingresa ya sea entero) hasta que N sea entero.

    Una simple implementación en Python:

    def toFraction(x): 
    d = 1
    while not float(x*d).is_integer():
    d += 1
    return str(int(x*d)) + "/" + str(int(d))

    ¿A alguien se le ocurre un método mejor?
  • También la versión recursiva para cancherearla más (aunque esta limitada por el limite de profundidad de recursividad del lenguaje)

    def toFraction(x, d=1):
    if float(x*d).is_integer():
    return str(int(x*d)) + "/" + str(int(d))
    else:
    return toFraction(x, d+1)
  • Fran hay una ecuacion matematica para eso ! :P jejeejejje
  • ¿Ah si? ¿cual che?  :-??
  • Por cierto, muy bueno el algoritmo, y bastante simple, me quedo con el primero que hiciste.
  • francisqillo buscate una novia
  • Jajajajaj que hace canario acá? Lamentablemente te voy a tener que borrar el usuario porque solamente hay una capacidad maxima de 10 :(

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!