Fraction

cs_Faust Messages postés 20 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 6 février 2003 - 5 févr. 2003 à 07:45
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 2 nov. 2004 à 17:51
Existe-t-il une routine ou un procédé qui permettrai de convertir un Real en Fraction ex: 0,5>>1/2
J'ai cru trouver la solution en découvrant la fonction Frac, mais elle donne en fait les uniqument chiffres après la virgule ex: Frac(5,123)=0,123 si ça peut servir à quelqu'un...
Bon coding à tous
F@ust :big)

1 réponse

cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
2 nov. 2004 à 17:51
Il y a deux idées:

1) Si le nombre n'a pas trop de décimales, tu le multiplies par la puissance de 10 adaptée. On a alors une fraction (X.10^k)/10^k. Avec un calcul de PGCD sur les entiers, on peut trouver la fraction réduite.

2) Si le nombre est 2,123123123123... avec une répetition périodique, alors adapte le programme suivant:

fonction (Nombre:real; Longueur:integer);
var {à faire};
begin
E:=1;
D:=Nombre;
for C:=1 to Longueur do
begin
Nombre:=Nombre*10;
E:=E*10;
end;
//On aurait pu utiliser la fonction Power de l'unité Maths
P:=PGCD(Nombre-D,E-1);
Fraction:=(A-D)/(E-1); //avec division par le PGCD en haut et en bas
end;
0
Rejoignez-nous