fraction.py

Created by schraf

Created on April 08, 2019

208 Bytes

Explications en vidéo

Petit programme permettant de convertir un nombre décimal en fraction.
>> fr(1/3+2.5)
17 / 6
>> fr(1.71428571)
12 / 7

Attention cependant, si dans votre calcul il y avait des nombres irrationnels (racine carrée, pi, etc), le programme donnera en réponse une fraction qui ne sera qu’une approximation du vrai résultat.
>> fr(3.14159265)
355 / 113

En effet 355/113 vaut environ 3.1415929203…

Version optimisée pour la Numworks

def fr(x):
  p,d,q,z=0,0,1,x
  while abs(p/q-x)>1e-6:
    z=1/(z%1)
    d,q=q,q*int(z)+d
    p=round(x*q,0)
  return "{} / {}".format(int(p),q)

Version pour la Ti-83 Premium CE

Le fichier à transférer sur votre machine ou alors tapez le programme ci-dessous :

Version simpliste

Si vous savez que le dénominateur n’est pas très grand (< 106), une solution très simple est de tester les dénominateurs les uns après les autres (1, puis 2, puis 3 etc.), le programme est alors extrêmement court :

def fr(x, q = 1):
  while abs(round(x*q)/q-x)>1e-6: q = q+1
  return "{} / {}".format(round(x*q),q)


# Version de la video
def fr(x):
  p,q,u,v,z = int(x),1,1,0,x
  while abs(p/q-x)>1e-6:
    z = 1/(z%1)
    k,l = int(z)*p+u,int(z)*q+v
    u,v,p,q = p,q,k,l
  return "{} / {}".format(p,q)