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 :

Calcul faux avec doubles


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut Calcul faux avec doubles
    Salut !

    je fais actuellement un exercice en JAVA et ce qui me paraissait trop facile est en train de me rendre dingue ...

    Ce que doit faire le programme :

    Votre programme doit lire trois nombre décimaux : 1) la valeur actuelle de la taxe sur une marchandise (en pourcentage), 2) la nouvelle valeur de la taxe (en pourcentage), 3) puis le prix actuel de la marchandise, taxes comprises, en euros. Il devra calculer et afficher le prix de la marchandise avec la nouvelle valeur de la taxe, arrondi au centime près.

    EXEMPLE 1

    entrée :
    5.5
    19.6
    24.9

    sortie :
    28.23

    EXEMPLE 2

    entrée :
    21.5
    21.5
    19.99

    sortie :
    19.99


    Trop facile, je me suis dis: juste du calcul de %... argghh en fait ce qui me casse la tête c'est la précision demandée. Voilà mon programme:

    (Une petite précision: je dois le faire avec des Doubles ou int uniquement -pas de float ou DecimalFormat, et je peux utiliser ceil(), floor(), round() -si nécéssaire ou des casts)

    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
     
     
    public class maClasse {
     
     
        public static void main(String[] args) 
        {
        	Scanner sc = new Scanner(System.in);
     
        	double currentTax = (sc.nextDouble())/100;
        	double newTax = (sc.nextDouble())/100;
        	double marchandiseAvecTaxe = sc.nextDouble();
     
        	double prixHt = (marchandiseAvecTaxe-(marchandiseAvecTaxe*currentTax));  
        	System.out.println("Prix HT : ( "+marchandiseAvecTaxe+" - "+"( "+marchandiseAvecTaxe+" x "+currentTax+" )"+" = "+prixHt);
     
        	double newPrice = (prixHt+(prixHt*newTax));
        	System.out.println("Prix TTC : ( "+prixHt+" + ( "+prixHt+" x "+newTax+" )"+" = "+newPrice);
     
     
        }
     
     
     
    }


    Par la même occasion quelqu'un saurait-il pourquoi mon Eclipse n'accepte que les entrées (pour les décimaux) avec une virgule (exemple: 2,7) ou lieu du point habituel (exemple: 2.7). Il m'affiche une erreur de type:

    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextDouble(Unknown Source)
    at maClasse.main(maClasse.java:12)


    dès que je rentre un point dans un décimal... En général c'est plutôt l'inverse non ? (Une option a configurer dans Eclipse ???)


    Merci !!!

  2. #2
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Qu'est ce qui ne marche pas au juste?

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 098
    Par défaut
    Pour ton premier problème, que tu exposes mais dont tu ne dis pas sur quoi il porte, j'imagine que tu constates que les calculs sont "faux" a quelques décimales près, ce qui est normal.

    Pour ton deuxième problème c'est dut à la localisation, eclipse n'ayant rien avoir la dedans.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut
    ouai c'est vrai je suis pas très clair ;o)

    En testant les exemples que je donne dans mon programme ça devrait cracher ce qui suit (avec exactitude, c'est ce qui est demandé)

    sortie :
    28.23

    sortie :
    19.99

    Or moi j'ai (sur le deuxième exemple):

    21,5
    21,5
    19,99


    Prix HT : ( 19.99 - ( 19.99 x 0.215 ) =15.692149999999998
    Prix TTC : ( 15.692149999999998 + ( 15.692149999999998 x 0.215 ) = 19.06596225

  5. #5
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    C'est normal, car 21.5% de 19.9 est inférieur à 21.5% de 15.692149999999998.
    C'est ta logique qui est fausse.

    Prenons comme nombre 100:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    100 - 10% = 90
    Puis
    90 + 10% = 99 (!=100)
    Tu comprends?

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut
    ahhhh, oui ;o) La vache, ça ne m'avait pas frappé: très bon exemple ! Bon il va falloir repenser mon bout code. Je laisse le tread ouvert pour l'instant ;o)

  7. #7
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Je vais t'aider, c'est ton prix hors taxe qui est faux.
    Tu fais HT = 19.99 - 21.5% de 19.99
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Prix HT : ( 19.99 - ( 19.99 x 0.215 ) =15.692149999999998
    Alors que tu devrais faire, HT = 19.99 - 21.5% de HT.
    Or on connais pas HT, pour cela une equation toute simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HT + HT*21.5/100 = TTC = 19.99
    Combien vaut HT?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2014, 08h36
  2. Problèmes avec des calculs sur des doubles
    Par Tora21 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 20/06/2011, 13h40
  3. [calcul] pb avec la syntaxe d'une expression calulée
    Par gloogloo dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 29/06/2005, 17h14
  4. [debutant][swt] CellEditor / CellModifier avec double clic
    Par antares24 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 10/05/2005, 02h25
  5. Réponses: 5
    Dernier message: 19/07/2004, 11h16

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