1. #1
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut programme de rendu monnaie

    le programme de rendu monnaie oublie les 0.02 a la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class exam2018 {
     
        public static void main(String[] args) {
     
        	float monnaie=50.02F;
        	float compteur=0;
        	while (monnaie>=20)
        	{
        		monnaie=monnaie-20;
        		compteur=compteur+1;
        	}
        	monnaie=monnaie*compteur-monnaie;
        	compteur=0;
        	System.out.println("nombre de billets de 20 :"+ compteur);
        	System.out.println("reste :"+ monnaie);
        		while (monnaie>=10)
        	{
     
        		monnaie=monnaie-10;
        		compteur=compteur+1;
     
        	}
        	monnaie=monnaie*compteur-monnaie;
        	System.out.println("nombre de billets de 10 :"+ compteur);
        	System.out.println("reste :"+ monnaie);
     
     
     
     
        }
    }
    merci par avance

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : décembre 2010
    Messages : 38
    Points : 79
    Points
    79

    Par défaut

    C'est cette ligne qui pose problème :
    monnaie=monnaie*compteur-monnaie;

  3. #3
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut

    oui mais que faire
    c'est pas une portée de variable plutot

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : décembre 2010
    Messages : 38
    Points : 79
    Points
    79

    Par défaut

    Non ce n'est pas la porté de la variable. Lit bien ce que fait la ligne et tu comprendras ce qu'il se passe.

  5. #5
    Membre confirmé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juin 2014
    Messages : 304
    Points : 510
    Points
    510

    Par défaut

    Pourquoi fais-tu monnaie = monnaie * compteur - monnaie; ? je ne comprends pas le sens de cette ligne.
    Si c'est de retirer de monnaie ce qui a déja était rendu, tu le fais déjà dans tes boucles : monnaie = monnaie - 10;

    Par ailleurs, ligne 13 tu remets compteur à 0, donc ligne 14 ton print affichera toujours 0 billets de 20.

  6. #6
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut

    j'ai un peu avancée
    mais j'ai un autre problème
    je veux arrondir monnaie a 2 décimales
    car je met monnaie à50.05 et il s'arrete a 4 boucles car la dernière boucle donne monnaie=0.0099999 ligne 37-38
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public class exam2018 {
     
        public static void main(String[] args) {
     
     
            double monnaie=50.05;
        	double compteur=0;
        	while (monnaie>=20)
        	{
        		monnaie=monnaie-20;
        		compteur=compteur+1;
        	}
        	monnaie=monnaie*compteur-monnaie;
        	System.out.println("nombre de billets de 20 :"+ compteur);
        //	System.out.println("reste :"+ monnaie);
        	compteur=0;
        		while (monnaie>=10)
        	{
     
        		monnaie=monnaie-10;
        		compteur=compteur+1;
        //			System.out.println("reste :"+ monnaie);
        	}
     
        	System.out.println("nombre de billets de 10 :"+ compteur);
        //System.out.println("reste :"+ monnaie);
     
        	compteur=0;
        		while (monnaie>0.01)
        	{
     
        		monnaie=monnaie-0.01;
        		compteur=compteur+1;
      	System.out.println("reste :"+"%.2f"+ monnaie);
        	}
     
        	System.out.println("nombre de billets de 0.01 :"+ compteur);
        //	System.out.println("reste :"+"%.0f"+ monnaie);
     
     
        }
    }

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    11 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 134
    Points : 26 563
    Points
    26 563
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par jmc41320 Voir le message
    car je met monnaie à50.05 et il s'arrete a 4 boucles car la dernière boucle donne monnaie=0.0099999 ligne 37-38
    Au lieu de : System.out.println("reste :"+"%.2f"+ monnaie);

    1. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      System.out.format("reste %.2f %n", monnaie);
    2. ou
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      System.out.println("reste " + String.format("%.2f",monnaie));
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut

    mais comment l'introduire dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (monnaie>0.01)
        	{
     
        		monnaie=monnaie-0.01;
        		compteur=compteur+1;
     
        	}

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    11 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 134
    Points : 26 563
    Points
    26 563
    Billets dans le blog
    2

    Par défaut

    "L'introduire dans la boucle" ? Tu veux dire appeler cette instruction à chaque itération ? Exactement de la même manière que tu fais d'habitude pour n'importe quelle instruction, y compris les deux qui se trouvent déjà dans cette boucle
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut

    ou plutot comment ecrire cette ligne avec des arrondis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    compteur=0;
        		while (monnaie>0.01)
        	{
     
        		monnaie=monnaie-0.01;
        		compteur=compteur+1;
     
        	}
        	compteur=compteur+1;
        	System.out.println("nombre de billets de 0.01 :"+ compteur);
        	monnaie=monnaie*compteur-monnaie;
        	System.out.format("reste %.2f %n", monnaie);

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    11 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 134
    Points : 26 563
    Points
    26 563
    Billets dans le blog
    2

    Par défaut

    Si tu veux que le calcul monnaie = monnaie-0.01 donne un résultat arrondi à 2 décimales, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (monnaie>0.01) {
     
        		monnaie=monnaie-0.01;
        		monnaie=(monnaie*100)/100; // arrondi à 2 décimales
        		compteur=compteur+1;
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 441
    Points : 19 391
    Points
    19 391

    Par défaut

    Hmm, je vois pas d'arrondi, moi.

    De toute façon on arrondit pas des double, pas s'ils ont une partie fractionnaire en tout cas. C'est un peu le principe des doubles. Tu n'aurais pas besoin d'arrondir si les doubles ne perdaient pas en précision au fur et à mesure qu'on cumule les calculs approchés mais inexacts. Ce qui veut dire que de toute façon les doubles ne font que de l'approché inexact. Pas d'arrondi donc. Ça n'existe pas un arrondi dans les nombres inexacts.

    On arrondit les double au moment où on les écrit à l'écran, c'est à dire quand on les transforme en texte. Avec format().

    Le vrai problème dans cette histoire, c'est de compter de l'argent avec des nombres inexacts, autrement dit avec des doubles. Il vaudrait mieux utiliser des int qui représentent les centimes. Ou à la rigueur des BigDecimal, qui sont des nombres à virgule, mais exacts.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut

    je cherche a decomposer une somme en billets de 20 , 10 et centimes
    jai voulu utiliser un float pour monnaie pour jai un low conversion ligne 32

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    public class exam2018 {
     
        public static void main(String[] args) {
     
     
            float monnaie=50;
        	float compteur=0;
        	while (monnaie>=20)
        	{
        		monnaie=monnaie-20;
        		compteur=compteur+1;
        	}
        	monnaie=monnaie*compteur-monnaie;
        	System.out.println("nombre de billets de 20 :"+ compteur);
        //	System.out.println("reste :"+ monnaie);
        	compteur=0;
        		while (monnaie>=10)
        	{
     
        		monnaie=monnaie-10;
        		compteur=compteur+1;
        //			System.out.println("reste :"+ monnaie);
        	}
     
        	System.out.println("nombre de billets de 10 :"+ compteur);
        //System.out.println("reste :"+ monnaie);
     
        	compteur=0;
        		while (monnaie>0.01)
        	{
     
        		monnaie=monnaie-0.01;
        		monnaie=(monnaie*100)/100;
        		compteur=compteur+1;
     
        	}
     
        	System.out.println("nombre de billets de 0.01 :"+ compteur);
     
        	monnaie=monnaie*compteur-monnaie;
        	//System.out.format("reste %.2f %n", monnaie);
        	System.out.format("reste", monnaie);
     
     
     
        }
    }

    merci

  14. #14
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    février 2016
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : février 2016
    Messages : 181
    Points : 82
    Points
    82

    Par défaut

    autre question monnaie vaut 50.04
    et si je décomposais ce nombre en 2 entiers 50 et 04
    comment faire?

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 441
    Points : 19 391
    Points
    19 391

    Par défaut

    Arrête avec ça et fais un int qui représente la somme en centimes au lieu de la représenter en euros.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre actif Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 256
    Points : 205
    Points
    205

    Par défaut

    Bonjour,

    tu devrais commencer par afficher monnaie car après le traitement que tu fais ligne 13, je doute que monnaie aie une valeur cohérente avec ton algorithme de rendu de monnaie. Quelle valeur veux-tu donner à monnaie par ce calcul ? Est-ce en accord avec la valeur que tu obtiens ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle.
    |
    | www.anadoncamille.com
    | sylv.tournois.free.fr
    |

Discussions similaires

  1. Rendu de monnaie
    Par bgre25 dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 13/05/2008, 19h55
  2. Réponses: 2
    Dernier message: 02/10/2007, 09h53
  3. Réponses: 13
    Dernier message: 11/01/2007, 14h13
  4. [Débutant] programme de Monnaie
    Par Storm-Rider dans le forum Langage
    Réponses: 15
    Dernier message: 28/11/2006, 20h15
  5. [javasript] rendu d'un programme de défilement de texte
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/01/2006, 11h02

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