IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

PPCM de deux float


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 59
    Points : 43
    Points
    43
    Par défaut PPCM de deux float
    Bonjour,

    Comment calculer le PPCM de deux float (PPCM = Plus Petit Commun Multiple) ?

    J'ai trouvé comment le calculer le PPCM de deux entiers mas pas celui de deux Float.

    Un bout de code sera la bienvenue.

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    A mon avis, ce que tu demandes n'a pas de sens en mathématiques.

    Tu trouveras TOUJOURS un plus petit commun multiple aussi petit que tu veux dans l'ensemble des réels.

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    En effet, le PPCM de deux floats n'a pas de sens. Qui te demande de faire ça ?

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Est-ce que ton problème est syntaxique ?

    Parce que comme l'a soulevé ram-000, il n'y a pas de PPCM dans les réels, uniquement les entiers.

    Si c'est un problème de syntaxe ou de sémantique, il faut veiller à ce que tes nombres réels soient convertis en entiers avant l'application du PPCM, ou ne faire une fonction PPCM qui n'accepte que des entiers, de cette manière, même si tu appelles ta fonction avec des doubles, le resultat se basera sur la partie entière.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int ppcm( int a, int b )
    {
       ... calcul du ppcm ...
    }
     
    int main()
    {
       double nombre1 = 18.1;
       double nombre2 = 9.2;
       std::cout << ppcm( nombre1, nombre2 ) << std::endl; // affichera bien le ppcm de 18 et de 9
    }

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Exactement : le PPCM n'a de sens que pour les entiers, c'est de l'arithmétique. Le faire sur des réels (floats) n'a aucun sens : tu n'auras pas plus de précision qu'avec des entiers, et même au contraire : tu vas en perdre un max !!

  6. #6
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 59
    Points : 43
    Points
    43
    Par défaut
    Je cherche pas de précision.
    Tout simplement les valeurs dont je vais calculer leurs PPCM sont des Floats.
    Est ce que je peux faire ainsi :

    Float a = 0.8;
    Float b= 0.2 ;
    Je vais par exemple les multiplier par 100 puis calculer le PPCM et à la fin deviser le PPCM par 100

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Ce n'est pas possible, cela n'a pas de sens.

    En admettant que cela soit possible, le PPCM de 0.8 et 0.2 pourrait être 0.2, 0.01, 0.000001, 0.0000000005 etc.

    Il y a TOUJOURS un plus petit nombre qui soit un diviseur alors que dans l'ensemble des entiers, il n'y a pas toujours de plus petit nombre qui soit un diviseur. C'est pour cela que le PPCM a un sens dans l'ensemble des entiers mais pas dans l'ensemble des réels (flottants).

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par wassimb Voir le message
    Je cherche pas de précision.
    Tout simplement les valeurs dont je vais calculer leurs PPCM sont des Floats.
    Est ce que je peux faire ainsi :

    Float a = 0.8;
    Float b= 0.2 ;
    Je vais par exemple les multiplier par 100 puis calculer le PPCM et à la fin deviser le PPCM par 100
    Quel que soient les réels A et B, et les facteurs réels I et J, un "commun multiple" M tel que M=A.I=B.J ne sera JAMAIS le plus petit, car il existe toujours plus petit : M/2 = A.I/2 = B.J/2 ... Et cela ne s'arrêtera jamais (cf. calcul infinitésimal et limites pour la preuve).

    C'est pour cela que le PPCM n'a aucun sens avec des réels...

Discussions similaires

  1. Comparaison de deux float
    Par MysticKhal_0 dans le forum C
    Réponses: 5
    Dernier message: 14/09/2012, 02h08
  2. Optimisation de la multiplication de deux float
    Par barhili04 dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 28/11/2009, 14h43
  3. Incertitude sur le produit de deux float
    Par f56bre dans le forum C++
    Réponses: 4
    Dernier message: 18/02/2009, 19h18
  4. Comparaison de deux Float
    Par The eye dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2008, 21h46
  5. [Math]Addition de deux float : résultat faux !!!
    Par toctof dans le forum Général Java
    Réponses: 4
    Dernier message: 20/05/2005, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo