TRANSFORMER UN NOMBRE AVEC VIRGULE EN FRACTION

dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014 - 17 juin 2013 à 16:11
cs_alpha5 Messages postés 74 Date d'inscription jeudi 10 août 2006 Statut Membre Dernière intervention 24 mars 2013 - 20 juin 2013 à 13:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/55225-transformer-un-nombre-avec-virgule-en-fraction

cs_alpha5 Messages postés 74 Date d'inscription jeudi 10 août 2006 Statut Membre Dernière intervention 24 mars 2013
20 juin 2013 à 13:30
Bonjour
Merci de vos commentaires
mai c'est un code pour rire
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
19 juin 2013 à 17:53
Bonjour Dheroux
on peut améliorer l'algo
l'algo doit verifier la périodicité du nombre après le
séparateur décimal
si il y a répetition on applique l'algo du dessus
si non
on multiplie le nombre décimal par 10^(nombre de chiffre après le point) et ensuite on esaie de simplifier
ex 0.3 donne 3/10
0.33 donne 1/3
je laisse le travail pour alpha5
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
19 juin 2013 à 08:35
Bonjour SHAYW,
Sauf erreur de ma part, l'algo que tu mentionnes dans ton commentaire ne s'applique qu'aux nombres rationnels (périodicité trouvée dans le quotient).
Ne s'applique plus par exemple à ce nombre 0.50864736 dont on ignore par avance s'il est le quotient d'une rationalité (puisqu'il peut y avoir d'autres décimales inconnues apès le ....736)
Bonne journée
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
17 juin 2013 à 21:29
Salut
1 le séparateur décimal de mon pc est un . et non une ,
pour savoir le séparateur décimal
Dim decimalSeparator As String = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator

2 ton option strict est à OFF et non à ON
3 l'algo n'est pas efficace
ta fonction pgcd exécute parfois une boucle infinie

ex d'un algo sur ce site
http://www.webmath.com/dec2fract.html
c'est en anglais
ex 0.428571428571
tu recherches s'il y a une répétition de chiffres
dans cette ex à partir du 6 iem chiffre après le .
donc on multiplie 0.428571428571 par 10^6
ce qui donne 428571.428571
on nomme x le nombre original x = 0.428571428571

x*10^6 = 428571.428571
x = 0.428571428571

on soustrait
x*10^6 -x = 428571
999999* x = 428571
x = 428571
------
999999

en simplifiant on obtient 3/7

allez essai cette fois ci de faire un effort
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
17 juin 2013 à 16:11
Bonjour,
Petits problèmes:
Exemple: 3,14159 donne 314159/100000
Exemple: 0,036251 donne 36251/1000000
Evidemment ces fractions sont exactes mais non satisfaisantes.

D'autre part, donnez un nom plus parlant aux TextBox ... exemple TxtNombreDecimal.text plutôt que textbox1.text
Donnez aussi un nom plus parlant à vos variables.
Et puis un peu plus de soin au niveau de l'interface graphique, c'est aussi important.

Juste un petit effort, et ce sera parfait. Merci
Rejoignez-nous