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 :

Résultat division : chiffres après la virgule incorrects


Sujet :

avec Java

  1. #1
    Membre à l'essai Avatar de z3bulon
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Points : 23
    Points
    23
    Par défaut Résultat division : chiffres après la virgule incorrects
    Bonjour,

    Pour un TP je dois réaliser une petite calculatrice simple comprenant un formulaire avec 2 champs et un opérateur.
    Lorsque je divise 17 / 2 le calcul me retourne : 8.0
    Comment obtenir 8.5 ?

    Voici ma class Calculer qui s'occupe des opérations :

    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
    package com.occalculatrice.metier;
     
    public class Calculer {
     
    	private int nombre1;
    	private String operateur;
    	private int nombre2;
    	private double resultat;
     
    	// constructeur
    	public Calculer(int nombre1, String operateur, int nombre2) {
    		this.nombre1 = nombre1;
    		this.operateur = operateur;
    		this.nombre2 = nombre2;
     
    		// TODO Cas division par 0
     
    		switch (operateur) {
    		case "+":
    			resultat = nombre1 + nombre2;
    			break;
    		case "-":
    			resultat = nombre1 - nombre2;
    			break;
    		case "x":
    			resultat = nombre1 * nombre2;
    			break;
    		case "/":
    			resultat = nombre1 / nombre2;
    			break;
    		default:
    			System.out.println("erreur !");
    		}
     
    	}
    	// Getter resultat
     
    	public double getResultat() {
    		return resultat;
    	}
     
    }
    Merci par avance pour le coup de mais ou une piste.

    PS : bonne fin d'année

  2. #2
    Membre à l'essai Avatar de z3bulon
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Points : 23
    Points
    23
    Par défaut
    Je poste ma solution si ça peut aider un "visiteur"...

    J'ai changé le type des attributs de int à double pour disposer des chiffres après la virgules.
    Ex : 5 / 3 = 1.6666666666667

    Pour compléter, je ne souhaite afficher que deux chiffres après la virgule.
    J'ai utilisé la fonction Math.round et l'accesseur devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public double getResultat() {
    		double resultatRound = Math.round(resultat * 100.0) / 100.0;
    		return resultatRound;
       }
    Si vous avez une autre méthode plus efficace ou si la mienne n'est pas optimale, merci de partager votre avis ;-)

  3. #3
    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
    Salut,

    Si c'est uniquement à l'affichage que tu veux ne conserver que 2 chiffres après la virgule, il suffit simplement d'utiliser un format :

    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    double d = 5d/3;
     
    // par format
    System.out.printf("%.2f%n",d); // ou System.out.println(String.format("%.2f",d)); 
     
    // par formateur
    System.out.println(new DecimalFormat("#,##0.00").format(d));

  4. #4
    Membre à l'essai Avatar de z3bulon
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Points : 23
    Points
    23
    Par défaut
    Merci joel.drigo pour cette méthode d'affichage, je n'y avais pas pensé...

Discussions similaires

  1. Problème de calcul : Résultat incorrect.
    Par Nico-xs dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/10/2006, 13h10
  2. Réponses: 4
    Dernier message: 06/09/2006, 11h45
  3. Réponses: 4
    Dernier message: 29/08/2006, 15h07
  4. Réponses: 1
    Dernier message: 07/02/2006, 12h52
  5. Réponses: 16
    Dernier message: 18/11/2005, 13h33

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