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

  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 105
    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 105
    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?

  8. #8
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut
    Je pourrais le dire mais à l'aide de la calculette ;o) Vas-y explique !!

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    C'est ce qu'on appelle dans notre jargon des maths -_-°.

    Plus exactement une équation du premier degré à une inconnue. C'est pas ce qu'on a trouvé de plus difficile.

    Soit TTC le prix toutes taxes comprises.
    Soit HT*le prix hors taxe.
    Soit T la taxe.

    - Identifier les connues et les inconnues.
    - Exprimer TTC en fonction de HT et T.
    - En déduire l'expression de HT en fonction de TTC et T.
    - Calculer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    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
    Pas besoin de calculatrice pour ça, d'ailleurs elle ne servirait à rien.
    C'est du niveau 5ème là, donc faut pas déconner nonplus.

    thelvin a fait l'effort de bien poser le problème, résous le maintenant.

  11. #11
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut
    Lol c'est dans ces cas-là où il ne faut pas s'énerver comme un troll... Bon, je n’aurais pas dû faire littéraire mais Sciences, j’aurais le statut d’être intelligent…

    Merci thelvin !

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Intelligent je sais pas, mais un ordinateur ne se programme pas avec des citations de Rousseau ou avec une bonne maîtrise des allégories, c'est sûr -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut
    C'est clair, je le découvre tous les jours et j'apprends. Après ton post la première chose faite était d'aller sur Google pour trouver des infos sur les équations du 1er degré… la vache c’est loin mes années collège… Mais bon j’absorbe, je progresse. Des fois je ne sais pas et c’est en désespoir de cause que je post sur un forum après avoir cherché à droite/gauche.

    Allez bonne soirée

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par Garamante Voir le message
    Bon, je n’aurais pas dû faire littéraire mais Sciences, j’aurais le statut d’être intelligent…
    En même temps, l'informatique est une discipline scientifique
    Ce n'est pas une question d'intelligence mais de connaissance. Si t'as pas les bases en maths, tu va souffrir en algorithmique
    On n'apprends pas à travailler une voiture sans apprendre les bases de la mécanique et de l'électricité. Là, c'est la même chose

  15. #15
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Par défaut
    Eh ben je souffrirais Sans challenges pas de grandes victoires... Tout le reste c'est vent et conformisme.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2014, 09h36
  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, 14h40
  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, 18h14
  4. [debutant][swt] CellEditor / CellModifier avec double clic
    Par antares24 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 10/05/2005, 03h25
  5. Réponses: 5
    Dernier message: 19/07/2004, 12h16

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