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

avec Java Discussion :

programme de rendu monnaie


Sujet :

avec Java

  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 : 59
    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 : 44
    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 : 59
    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 : 44
    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 éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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 : 460
    Points : 1 014
    Points
    1 014
    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.
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  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 : 59
    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
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    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 : 59
    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
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    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 : 59
    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
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    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
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    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 : 59
    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 : 59
    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
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    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 averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    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 : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    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
    |
    | 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