Problème avec les double en java

Bonjour,

je veux savoir quelle est la méthode java qui nous permet de fixer le nombre des entiers après la virgule dans un nombre double .
par exemple je veux écrire le nombre 2.103651845 comme ça: 2.10

merci d'avance

4 réponses

  1. Modérateur
    Tu peux t'en sortir directement à l'affichage :
    double d = 2.1036451845;
    System.out.printf("%.2f\n",d);
    0
    1. mais je veux afficher le résultat dans une jtextfield (jtextfield1.settext(String.valueof(d)))
      ou d est le nombre 0.1025469875
      0
      1. Modérateur
        Il te suffit d'enlever les chiffres qui t'embêtent (je détaille, mais on peut faire ça en 3 lignes) :

        double d = 0.125;
        String s = String.valueOf(d);
        int pos = s.indexOf('.')+1;
        int sz = s.length();
        int n = Math.min(pos+2, sz);
        String txt = s.substring(0,n);
        jtextfield1.setText(txt);
        0
      2. je pense tu n'a pas me compris le nombre 0.1025..... c'est un exemple stt ,
        mais moi je veux écrire des nombre double avec deux chiffres âpre la virgule c'est ça mon problème ces nombres peuvent être 0.154875852 comme ils peuvent être 4587.12544658 etc et moi je veux les écrire comme ça 0.15 et 4587.12
        0
    2. Modérateur
      C'est plutôt toi qui n'a pas compris le code que j'ai fait je pense...
      Car tu as juste à remplacer la valeur de d de départ pour que ça aille correctement !

      Je fais une fonction ce sera peut-être plus clair :

      /**
       * @param d le double à convertir
       * @param nb le nombre de chiffres après la virgule
       * @return le String représentant d avec nb chiffres après la virgule
       */ 
      public static String doubleToString(double d, int nb)
      {
          String s = String.valueOf(d);
          int pos = s.indexOf('.')+1;
          int sz = s.length();
          int n = Math.min(pos+nb, sz);
          String txt = s.substring(0,n);
          return txt;
      }

      Version condensée :

      public static String doubleToString(double d, int nb) {
          String s = String.valueOf(d);
          return s.substring(0,Math.min(s.indexOf('.')+1+nb, s.length()));
      }

      Exemple :

      jtextfield1.settext(doubleToString(4587.12544658,2));
      0