Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme arrondi sur les Float

    29 octobre 2014 à 16:46:37

    Bonjour à tous,

    J'ai un problème lors d'un calcul de float.. c'est bête mais je n'arrive pas à m'n sortir.. 

    Je fais une différence de float mais, la différence renvoyée n'est pas exactement celle que j'attends..

    En effet java arrondi 999 999.99 en 1 000 000.00..

    C'est assez problématique étant donné que c'est sur du calcul financier..

    Un peu d'aide ne serait pas de refus 

    Ci dessous mon code : 

    Float nouveauSolde = Float.parseFloat("999999.99") - Float.parseFloat("999999.00");
    System.out.println("s : " +  String.valueOf(Float.parseFloat("999999.99")));
    System.out.println("text : " + String.valueOf(Float.parseFloat("999999.00")));
    System.out.println("nouveau solde : " + nouveauSolde);


    Merci d'avance ! 

    Gauthier 

    • Partager sur Facebook
    • Partager sur Twitter
      29 octobre 2014 à 23:01:45

      As-tu déjà réfléchit à comment sont codés les nombres décimaux à virgule en binaire ? 

      Par exemple 5.4788554 encodé au format IEEE754 sur 32bits donne un truc comme 01000000101011110101001011001001, et ce nombre binaire une fois "retraduit" en décimal vaudra environ 5.478855609893798828125 (je ne vais pas rentrer dans les détails du pourquoi du comment :D)

      C'est l'un des problèmes de l'informatique actuel.

      Je te conseille d'utiliser les doubles qui sont encodées sur 64 bits, tu auras une double précision. Il y a peut être la class BigDecimal qui peut t'aider.

      -
      Edité par LeSuricateFurtif 29 octobre 2014 à 23:02:49

      • Partager sur Facebook
      • Partager sur Twitter
      Un de ces quatre, viens faire un tour sur Zeste de Savoir !

      Probleme arrondi sur les Float

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown