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 :

Arrondi des nombres Double


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Par défaut Arrondi des nombres Double
    bonjour,

    la méthode Math.round() permet de faire round sur des double

    par exemple valeur initiale : 1.6 cette méthode retourne 2.0

    mais j'ai un cas ou la valeur est 1.856999

    je veux le rendre en 1.857 comment faire ça ?
    car la méthode round me donne 2.0 dans ce cas ?

    et merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Salut, tu peux utiliser les BidDecimal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double a = 1.856999;
    BigDecimal bd = new BigDecimal(a);
    bd= bd.setScale(3,BigDecimal.ROUND_DOWN);
    a = bd.doubleValue();

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Le truc classique est de multiplier par 10^3 , puis d'utiliser Math.round() et de rediviser par ((10^3)*1.0)

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En fait, la "bonne méthode" dépend de ce qu'on veut en faire au juste :

    - si on veut continuer les calculs avec des nombres flottants approchés, mais qu'on veut arrondir cette valeur, la méthode "multiplier par 1000, utiliser Math.round() et diviser par 1000," est la bonne.

    - si on veut continuer des valeurs numériques, mais basés sur l'arrondi exact de ce flottant, il faut convertir le double en BigDecimal, arrondir le BigDecimal, et rester en BigDecimal. Les flottants sont approchés.Toujours.

    - Si on veut simplement afficher le nombre, ou le convertir en String en général, en arrondissant à la 3e décimale, il vaut mieux utiliser le DecimalFormat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NumberFormat nf = new DecimalFormat("0.###");
    String s = nf.format(monNombre);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    Bonjour,

    Toujours avec NumberFormat on a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NumberFormat nf = new NumberFormat.getInstance();
    nf.setMaximumFractionDigits(3);
    String s = nf.format(monNombre);

  6. #6
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Par défaut
    Salut,

    voici ma fonction pour arrondir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public double arrondir(double nombre,double nbApVirg)
    	{
    		return(double)((int)(nombre * Math.pow(10,nbApVirg) + .5)) / Math.pow(10,nbApVirg);
    	}
    Le premier paramètre est le nombre que tu souhaite arrondir et le second te permet de spécifier le nombre de chiffre après la virgule.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/10/2008, 11h20
  2. Réponses: 1
    Dernier message: 21/04/2008, 16h00
  3. Réponses: 3
    Dernier message: 22/05/2005, 12h59
  4. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24
  5. Réponses: 3
    Dernier message: 08/09/2003, 15h06

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