Arrondi en java

Bonjour,
Je souhaiterai arraondir un nombre de type "double" qui a un dizaine de chiffres après la virgule afin qu'il n'en est plus que 2 au maximum.
J'ai trouvé la fonction round mais cela provoque une erreur à la compilation "double cannot be dereferenced".
(J'utilise Java 1.4.1.)
Si vous pouviez m'aider
Merci par avance

4 réponses

  1. Webmaster
    Une astuce qui pourrait certainement vous aider sur la manière d'arrondir un nombre en Java avec ce lien.

    Antoine
    1. Modérateur
      Tu n'as pas l'impression d'arriver avec 10 ans de retard ?

      La question : "J'utilise Java 1.4.1."

      Ton astuce : "Si vous utilisez une version de Java antérieure à la 1.6, cette technique ne fonctionnera pas"

      En plus de cela ce n'est pas la meilleure manière d'obtenir un arrondi en Java !
      En Java 1.5 et plus :
      System.out.printf("%.2f",1.23456789); // 1.23

      Si le but était de mettre en valeur les articles du JDN, c'est un coup d'épée dans l'eau...
  2. empêche des erreurs

    public class RoundTest
    {   
        public static void main(String[] args)
        {
            double num = myRound(15.6666666, 2);
            System.out.println( num ); //it’s a double
            
            String str = myRound(15.6666666, "0.00");
            System.out.println( str ); //it’s a String
        }
        
        private static double myRound(double value, int decimalPlaces)
        {
            if(decimalPlaces < 0) { return value; }
            double augmentation = Math.pow(10, decimalPlaces);
            return Math.round(value * augmentation) / augmentation;
        }
        
        private static String myRound(double value, String format)
        {
            if(format == null  ||  format.length() <= 0) { return String.valueOf(value); }
            return new DecimalFormat(format).format(value);
        }
    }
    
    1. static public double arrondir(double value, int n) {
      double r = (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n));
      return r;
      }

      static public Double arrondir(Double value, int n) {
      double r = (Math.round(value.doubleValue() * Math.pow(10, n))) / (Math.pow(10, n));
      return new Double(r);
      }

      ==>Exemple d'utilisation : arrondir(new Double(0.004),2) ;//arrondi à la 2eme décimale
      1. Salut,
        voilà qui pourrait t'aider

        // Methode arrondi
        //--------------
        // Renvoie un reel avec 2 chiffres apres la virgule
        public double arrondi(double val) {return (Math.floor(val*100.0))/100;}

        Bon java
        puce
        1. Bonjour,
          pour plus de précision, je dirais:
          public double arrondi(double val) {
          return (Math.floor(val*100+0.5))/100;
          }
          a+
        2. ou (int)(val+0.5) puisque (int) tronque et rajouter 0.5 permet d'arrondir