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 :

Problèmes avec des calculs sur des doubles


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Points : 116
    Points
    116
    Par défaut Problèmes avec des calculs sur des doubles
    Bonjour à tous,

    J'ai un problème avec un résultat d'un calcul de 2 doubles : doubleA * doubleTaux.

    Il n'y a pas de calcul avec de chiffre à virgule, toujours des entiers en premier double.
    Les taux sont 0.1, 0.01, 0.001, 10, 100, 1000 etc...

    Les résultat obtenu sont corrects pour la plupart, mais pas toujours.

    Voila les erreurs que j'ai noté :
    1er problème:
    j'obtiens ce résultat:
    0.x00000000000000n pour x*0.1
    ou lorsque x est égal a 3, n est égale à 4,
    le reste des couple de valeur 6/1 ; 7/1 ; 12/2 ; 14/1 ; 17/2 ; 19/1
    le résultat devrait être 0.x

    2eme problème:
    0.00x0 pour x*0.001
    Le dernier zéro ne devrait exister, il apparait pour tous x

    3eme problème:
    0.00x00000000000000n pour x*0.001 (même calcul que précédent)
    voici les couples de valeur x/n:
    9/1; 13/1 ; 18/2

    4eme problème:
    0.35000000000000003 pour 35*0.01
    voila le dernier que j'ai noté, bon je vous ai pas filer tous les couples de valeurs pour celui-la.

    Voila si quelqu'un aurait une explication ?

    Merci d'avance pour votre aide.
    Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !

    -Perceval-

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 36
    Points
    36
    Par défaut
    J'ai souvenir que les calculs avec des doubles ne sont pas très précis à cause de la conversion en binaire. Il y a souvent un arrondi de fais. Je ne sais pas par contre comment faire pour régler ce problème, le mieux étant d'effectuer des calculs sur des int. Regarder p-e une bibliothèque de calcul mathématique.

    J'espère ne pas être a coté de la plaque et que cela vas t'aider.

  4. #4
    Membre régulier Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Points : 116
    Points
    116
    Par défaut
    C'est vrai j'avais zappé ces problèmes de précision, mais cela ne devrait-il pas se trouver dans tous les résultats sur la même position?

    Enfin bon je vais tester le BigDecimal.
    Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !

    -Perceval-

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 36
    Points
    36
    Par défaut
    Toutes les valeurs décimales ne peuvent être convertie en binaire donc certaines sont arrondies, d'autre non

  6. #6
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Le double est un nombre à virgule flotante.
    Cette technique permet de gérer des calculs sur des nombres très grands ou très petits.

    Mais ce ne sont en effet que des approximations de valeurs réelles.
    Généralement, cette imprecision est masquée par le fait qu'elle est minime par rapport à l'ordre de grandeur du nombre.

    Dans les exemples donnés, l'imprécision est de l'ordre de 10 puissance -13.

  7. #7
    Membre régulier Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Points : 116
    Points
    116
    Par défaut
    Aujourd'hui j'ai pu finir mes modifs et bienvenue les BigD et au revoir les doubles, ça fonctionne très bien. Merci à vous.
    Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !

    -Perceval-

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

Discussions similaires

  1. problème avec include / require sur des virtualhost
    Par e-m.guillaume dans le forum Apache
    Réponses: 4
    Dernier message: 17/11/2013, 17h32
  2. TCD avec champ calculé sur des champs nombre
    Par Scrabblouille dans le forum Excel
    Réponses: 0
    Dernier message: 06/10/2011, 20h16
  3. problème avec le calcul sur ordre
    Par marcuswillbe dans le forum Excel
    Réponses: 3
    Dernier message: 28/01/2009, 19h56
  4. Problème avec un tween sur des clips crées dynamiquement
    Par Invité dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 21/05/2008, 17h43
  5. DataColumn avec un calcul sur des dates
    Par GeantVert13 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 24/10/2006, 21h19

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