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 :

Un résulat inexact


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut Un résulat inexact
    Bonjour,

    J'ai une erreur étrange en lançant ce programme dans lequel je saisis un montant HT : 100 , du taux de TVA : 20 et cherche le prix TTC.
    Il devrait m'afficher 120 MAIS me donne 120,00001
    Savez vous d'où peut venir cette inexactitude ?

    Merci beaucoup d'avance pour l'aide que vous pourrez m'apporter.

    voilà ce que j'ai fait en code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import javax.swing.*; 
    public class drty {
     
    public static void main(String[] args) {
     
    Float x,y;
    x=Float.parseFloat(JOptionPane.showInputDialog(null,"Entrez le montant hors taxe:" ));
    y=Float.parseFloat(JOptionPane.showInputDialog(null,"Entrez le taux de TVA:" ));
    JOptionPane.showMessageDialog(null,"Le montant TTC est : "+x*(1+y/100));
    }
    }

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974

  3. #3
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Petit remarque préalable : utilise la balise code pour afficher du code.

    Pour ton problème, c'est normal, cela est du à la représentation des float en mémoire (mantisse et exposant)

    la précision des float est, me semble-t-il, de 6 chiffres significatifs, et de 15 chiffres significatifs pour les double.
    Si tu souhaites ne plus avoir de type de problème, la classe BigDecimal peut t'aider.

  4. #4
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,


    j'ai galéré avec les problèmes d'imprécisions sur les montants.
    Personnellement, j'utilise maintenant des 'entiers' contenant le montant en centimes. Il n'y a plus d'imprécision dans les calculs.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par rtg57 Voir le message
    j'ai galéré avec les problèmes d'imprécisions sur les montants.
    Personnellement, j'utilise maintenant des 'entiers' contenant le montant en centimes. Il n'y a plus d'imprécision dans les calculs.
    Ouaip.
    Entiers, avec long ou BigInteger. Ou à la rigueur calculs exacts avec BigDecimal. Ça évite de devoir se demander si les imprécisions des flottants ne vont pas devenir significatives, quand on fait des calculs monétaires.
    Les flottants c'est pas mal, par exemple pour des calculs de coordonnées ou de température, où on se tape que les calculs soient exacts, il faut juste qu'ils soient suffisamment précis.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    +1 pour BigDecimal
    voir : http://jmdoudoux.developpez.com/cours/developpons/java/

    BigDecimal est la classe "approuvée" pour manipuler des montants monétaires
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut
    ça complique quand même pas mal l’exécution de calculs très simples, mais j étudie ça au plus vite.
    merci pour vos réponses rapides.

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

Discussions similaires

  1. [Oracle 9i]Exporter Résulat SQL en XML
    Par kobe dans le forum Oracle
    Réponses: 16
    Dernier message: 29/04/2007, 18h05
  2. between date dans requête donne des faux résulats
    Par pschmidtke dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/06/2006, 16h43
  3. exemple du FAQ inexacte
    Par kevredon dans le forum Général Java
    Réponses: 10
    Dernier message: 18/05/2006, 13h52
  4. Enregistre résulat multiplication dans une table
    Par faranfasi dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h04
  5. Perplexité face au résulat de mon algo ...qu'en pensez vous?
    Par Clad3 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 14/06/2005, 15h15

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