Trouver période de la décimale d'un nombre
Résoluyg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
- Trouver période de la décimale d'un nombre
- Trouver adresse mac - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Nombre de jours entre deux dates excel - Guide
- Ou trouver l'adresse ip - Guide
11 réponses
Pour transformer en fraction:
Public Function frak(x As Double) As String Const mini As Double = 1 / 1000000000# Dim i As Integer, t As Double, numer As Long, tt As Double frak = "?" For i = 1 To 1000 t = x * i numer = Int(Round(t)) If numer >= 1 Then tt = t / numer If Abs(tt - 1) < mini Then frak = Str(numer) If i > 1 Then frak = frak + " / " + Str(i) End If Exit For End If End If Next i End Function
Réponse pour le modérateur.
Cela me fait plaisir que vous me preniez pour un étudiant mais j’ai 63 ans révolus.
J’ai fait une simulation en VBA sur Excel d’un module Transmittance (filtre passe bas d'ordre 1 et dérivée) qui nécessite environ 5000 calculs pour obtenir la courbe du signal de sortie qui donnent, pour la plupart des résultats à virgule. Pour une raison de simplification de l’affichage, je voudrais convertir certains de ces décimaux en nombres fractionnaires (les points remarquables de la courbe).
Si le nombre décimal contient une série périodique qui se répète à l’infini, il faut connaitre cette série pour pouvoir la supprimer et convertir le nombre en fraction. D’où ma question.
J’ai déjà essayé plusieurs solutions qui n’ont pas aboutis et que j’ai effacé. Je demande éventuellement de nouveaux axes de recherche. Mais bien sûr si quelqu’un a une solution toute faite, je suis aussi preneur.
Cordialement
bonjour,
étudiant ou pas, il est nécessaire de contribuer soi-même afin de progresser. Que ce soit un exercice scolaire ou un défi personnel. Dommage que tu ne décrives pas ce que tu as essayé et effacé, nous aurions pu mieux te guider.
En réalité, il n'est pas possible de convertir ainsi en fraction un nombre dont on ne connait que quelques décimales. Le concept même de "qui se répète à l’infini" n'a pas de sens quand tu ne connais que quelques décimales.
Par exemple, avec le nombre 0,133333333, on n'a aucune information qui indique ce que seront les décimales suivantes.
Si tu te contentes de chercher une séquence répétitive dans les quelques décimales connues, je suggère de traiter la représentation décimale comme un texte, et de chercher si le groupe des N dernières lettres se répètent (ou épuisent le texte), pour le N le plus petit possible. Cela te donnera le résultat recherché pour tes 3 exemples.
Exemple avec 3,245245245:
- tu prends le dernier chiffre, 5 et tu constates qu'il ne se répète pas
- tu prends les deux derniers chiffres, 45, et ils ne se répètent pas
- tu prends les trois derniers chiffres, 245, et ils se répètent, c'est ta solution
Si tu "espères" qu'un nombre est une fraction pour pouvoir en simplifier l'affichage, n'est-il pas plus simple de le multiplier par les dénominateurs recherchés, et de vérifier que le produit est presque un entier?
Suivant ce que tu considères comme un dénominateur utile, tu pourrais multiplier par tous les entiers de 2 à 10000, et vérifier si le produit convient comme numérateur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionRéponse pour le modérateur.
Je ne suis pas modérateur, mais contributeur.
Cela me fait plaisir que vous me preniez pour un étudiant mais j’ai 63 ans révolus
Soit. Cependant, il y a dans cet article des conseils qui peuvent être appliqués quel que soit le cas. Comme par exemple, celui repris par yg_be, de décrire ce que tu as essayé, ça évite de te reproposer la même chose et permet de cerner ton niveau pour adapter notre réponse.
Bonsoir
Merci pour ta réponse
Je suis d'accord avec toi que l'on ne peut pas parler d'infini sur l'afficheur d'une calculatrice, mais je considère que le nombre 0,133333333 donne bien la fraction 2/15.
J'avais bien converti la partie décimale en texte mais je me suis vite emmêler les pinceaux. Par contre l'idée de commencer par la fin est à essayer. je vais voir.
Bonjour
Si j'ai bien compris le but est de mettre un rationnel sous forme de fraction A/B.
On peut faire ça avec une calculatrice scientifique un peu évoluée.
Avec Excel on peut changer le format de cellule en choisissant Fraction. Il vaut mieux travailler sur la partie décimale, pour éviter l'affichage bizarre sous forme d'un entier et d'une fraction.
Bonjour,
Oui mais sans calculatrice (je le fais avec ma "Petite fx" pas scientifique et pas évoluée du tout). Je cherche a le faire dans une fonction (algorithme) utilisable dans n'importe quel langage un tant soit peu évolué C#, Visual Basic ou même VBA.
Bonjour
Pour en faire une fraction, pourquoi ne pas multiplier par 10^n / 10^n, n étant le le de décimales et ensuite réduire la fraction?
Par exemple 0.125 = 0.125 * 1000 / 1000 =125 / 1000 = 25 / 200 = 5 / 40 = 1 / 8
Là j'ai détaillé, mais si tu décomposes le numérateur et le dénominateur en produits de facteurs premiers, il te suffit de diviser en haut et en bas ceux qui sont identiques.
125 = 5 * 5 * 5
1000 = 5 * 5 * 5 * 2 * 2 * 2
On divise par 5 * 5 * 5, il reste 1 en haut et 2 * 2 * 2 en bas soit 8
Bonjour
Désolé de ne pas avoir pu répondre plu tôt.
yg_be, merci pour ta fonction.
Je n'ai pas eu le temps de regarder comment elle fonctionne, je l'ai juste copier/coller dans Excel pour la tester.
Malgré un petit problème ( pour 0,13333333 elle renvoie ? au lieu 2/15 ) elle a l'air de fonctionner pas mal et elle feras surement une bonne base de réflexion.
je vais la regarder de près
plus lisible et plus général: