Arrondi en java

Johanna -  
KX Messages postés 19031 Statut Modérateur -
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. puce
     
    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
    0
    1. philtrain
       
      Bonjour,
      pour plus de précision, je dirais:
      public double arrondi(double val) {
      return (Math.floor(val*100+0.5))/100;
      }
      a+
      0
    2. pas membre
       
      ou (int)(val+0.5) puisque (int) tronque et rajouter 0.5 permet d'arrondir
      0
  2. stonga
     
    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
    0
  3. DJDaveMark
     
    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
  4. Antoine Crochet-Damais Messages postés 16 Statut Webmaster 1 240
     
    Une astuce qui pourrait certainement vous aider sur la manière d'arrondir un nombre en Java avec ce lien.

    Antoine
    -1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      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...
      0