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

API standards et tierces Java Discussion :

Arrondir un chiffre a une décimal près


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut Arrondir un chiffre a une décimal près
    Bonjour,
    Je voudrais arrondir mes chiffres ainsi
    Ce sont des float
    Exemple : 0.9 donnera 1.0
    263.45 donnera 263.5
    22.37 donnera 22.4

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Par défaut
    Math.round(10d*x)/10d;

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    Tester avec x = 0.9 j'ai toujours 0.9 en sortie

  4. #4
    Invité de passage
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut
    Bonjour,

    C'est normal que 0.9 te donne 0.9 puisque tu est déjà à une décimale près.
    Pour 263.45 tu voulais que ça donne 263.5 comme pour 22.37 qui donne 22.4 ou la tu arrondie à une décimale près et pour 0.9 tu veux arrondir à l'unité près.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est pas très clair, tu veux faire quoi, retirer systématiquement 1 décimale?


    C'est pas évident car même si t'affiche 0.9, la float stock peut être 0.90000000001 ou 0.899999999999 et tu as déjà un arrondi à l'affichage....

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    Je viens de me rendre compte que mon exemple n’était pas bon je recommence

    Par exemple:
    • -0.95 -> -1.0

    • 265.45 -> 265.5

    • 12.24 -> 12.2

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Ta demande n'est pas très claire en effet

    Dans ton exemple tu veux arrondir a la 0 ème décimale (bon a l'unité quoi), puis la 1 ère puis la 1 ère (donc contradiction dans l'ennoncé ou volontée réelle?)

    Manuellement ca donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void main(String args[])
    	{
    		System.err.println("** "+arrondir(-0.95, 0)); // Donc -1.0
    		System.err.println("** "+arrondir(265.45, 1)); // Donc 265.5
    		System.err.println("** "+arrondir(12.24, 1)); // Donc 12.2
     
    	}
     
    	public static double arrondir(double in, int decimal)
    	{
    		double v = ((Math.round(in * (Math.pow(10, decimal)))) / (Math.pow(10, decimal)));
    		return v;
    	}
    Après si tu veux un système qui va choisir pour toi quel doit être la décimale, bonne chance ...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    donc en gros tu veux un arrondi à une décimal où le 0.5 serait arrondi au supérieur pour els nombres positifs et arrondi à l'inférieur pour les nombre négatifs....


    Ben faut y aller à la mano:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		for (float x : new float[] {-0.95f, 265.45f, 12.24f}) {
    			float arrondi = (float)Math.floor(10*x+(x<0.0?(-0.5):0.5))/10;
    			System.out.println(arrondi); 
    		}

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    ok merci pour vos exemple de code mais voila ce que j'obtient
    Valeur: 0.95 arrondi: 1.0
    Valeur: -267.95 arrondi: -268.0
    Valeur: -530.1 arrondi: -530.2
    Valeur: -562.7 arrondi: -562.8
    Valeur: -584.3 arrondi: -584.4
    Valeur: -597.0 arrondi: -597.1
    Valeur: -608.1 arrondi: -608.2
    pourquoi pour -530.1 il m'arrondr à -530.2 si on aurait eu -530.15 j'aurais compris mais la on a -530.10 ..?
    (j'utilsie le code de tchize_ )

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    parce que c'était de la bidouille codée vite fait.
    Plus lent mais exact
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arrondi =Math.round(Math.abs(10*x))/10f*(x<0.0?-1.0f:1.0f);

  11. #11
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    Merci a tous et merci tchize_

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

Discussions similaires

  1. Comment arrondir un chiffre et lui donner une forme
    Par sab_info dans le forum SSRS
    Réponses: 1
    Dernier message: 18/02/2013, 16h25
  2. arrondir à une décimale
    Par tomas dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/11/2007, 15h19
  3. [VB5] Mettre une valeur sous la forme d'un chiffre avec 3 décimales
    Par sylvette dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/10/2007, 19h52
  4. [CR] Comment arrondir un chiffre a 3 ap la virgule en code
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 10/06/2004, 18h59
  5. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56

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