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

Java Discussion :

Supprimer les zéros après la virgule


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Par défaut Supprimer les zéros après la virgule
    Bonjour à tous!

    Voila j'ai fait une calculatrice et quand je fait les calculs simple genre addition (par exemple 1+1) j'obtiens 2,0. Donc je voudrai savoir comment supprimer la virgule et le 0 mais par contre des fois j'ai des calculs avec des vrai chiffres après la virgule donc ceux la je voudrai garder tout se qu'il y a après la virgule. Petit précision mes calculs sont fait avec des types double.
    J'espère que je suis au bon endroit pour la discusion.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Par défaut
    Une idée, convertir l'affichage de tes résultats en String et utilisé ce petit bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
        public static void main(String[] args) { 
            try {       
                System.out.println(formatDouble(Double.valueOf("1232.05698")));
                System.out.println(formatDouble(Double.valueOf("4563.00")));
            } catch (Exception e) {
            }
        }
     
        public static String formatDouble(Double d){
            String doubleString = d.toString();
            int positVirgule = doubleString.lastIndexOf(".");
            boolean sansVirgule = true;
            for(int i=positVirgule+1;i<doubleString.length();i++){
                if(doubleString.charAt(i) != '0'){
                    sansVirgule = false;
                    break;
                }
            }
            return sansVirgule ? doubleString.substring(0, positVirgule) : doubleString;
        }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import java.text.DecimalFormat;
    //.......
                DecimalFormat formatter = new java.text.DecimalFormat("####.#################");
                System.out.println(formatter.format(Double.valueOf("1232.05698000000000000005")));
                System.out.println(formatter.format(Double.valueOf("4563.00")));
    //.......
    //avec le format adéquat pour ton programme dans le patern

  3. #3
    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
    Citation Envoyé par Latimer Voir le message
    Voila j'ai fait une calculatrice et quand je fait les calculs simple genre addition (par exemple 1+1) j'obtiens 2,0. Donc je voudrai savoir comment supprimer la virgule et le 0 mais par contre des fois j'ai des calculs avec des vrai chiffres après la virgule donc ceux la je voudrai garder tout se qu'il y a après la virgule. Petit précision mes calculs sont fait avec des types double.
    J'espère que je suis au bon endroit pour la discusion.
    Cela dépend comment tu as fait pour afficher ce nombre quelque part. Il faut nous montrer le code. Il faut toujours montrer le code.
    Le truc en question peut certainement être configuré pour éviter d'afficher des zéros et une virgule inutiles... Mais il faut qu'on sache lequel c'est, il y en a plein.

    Une précision quand même : tu veux garder tout ce qu'il y a après la virgule... Avec des doubles, et le calcul de 1/3, ça va faire beaucoup de chiffres.
    Et je rappelle qu'en double les calculs sont approchés, pas exacts. Par exemple le nombre 0.1 n'existe pas, il est remplacé par 0.1000000000000000055511151231257827021181583404541015625
    Il vaut mieux afficher un certain nombre de chiffres après la virgule, genre 5 ou 7, et arrondir au dernier. C'est ce que font les trucs qui affichent des nombres pour l'utilisateur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Par défaut
    Voici mon code:

    c'est le code lorsque l'on clique sur le bouton pour l'addition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     if(e.getSource() == boutadd){
     
    							 if(clicOperateur){
    							        calcul(); //fonction calcul
    							        lab.setText(String.valueOf(chiffre1));
    							      }
    							      else{
    							        chiffre1 = Double.valueOf(lab.getText()).doubleValue(); //on prends le chiffre dans le label et on le convertit en double
    							        clicOperateur = true;
    							        lab.setText("");
    							      }
     
     
    							 operateur = "+";
    voici le code qui me permet de faire le calcul (pour l'addition)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void calcul(){
    	    if(operateur.equals("+")){
    	      chiffre1 = chiffre1 + 
    	    		  Double.valueOf(lab.getText()).doubleValue();;
     
    		    		  resultat=chiffre1;  
     
    	      lab.setText(String.valueOf(chiffre1));
    	    }
    }
    Par ailleurs lorsque je fait une division j'utilise ceci pour limiter les nombres a 15 chiffres après la virgule:

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

  5. #5
    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
    D'accord. Pour info String.valueOf(2.0d) ne donne pas 2,0 mais 2.0 .

    Bon, donc là tu utilisais aucun formateur, donc comme dit AASProni, le mieux c'est d'utiliser un DecimalFormat.
    Sauf qu'au lieu de mettre des # à rallonge, je le construirais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(0);
    df.setMaximumFractionDigits(15);
    Du coup tu affiches pas de zéro inutile, et tu arrondis à la 15e décimale, sans aller jouer avec les scale des BigDecimal.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Par défaut
    Merci sa m'a l'air pas mal!

    Je l'ai adapté et sa fonctionne c'est super!!
    Par contre j'utilise une variable qui me permet de redonner le résultat du calcul mais le problème c'est que j'ai essayer de faire une conversion du résultat pour le stocker dans la variable résultat mais il me recrache le 2.0. Donc comment faire ?
    Voici se que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     if(operateur.equals("+")){
    	      chiffre1 = chiffre1 + 
    	    		  Double.valueOf(lab.getText()).doubleValue();;
    	    		  DecimalFormat df = new DecimalFormat();
    	    		  df.setMinimumFractionDigits(0);
    	    		  df.setMaximumFractionDigits(15);
    	    		  String s=df.format(chiffre1);
    		    		  resultat=Double.valueOf(s);;;  //voici ma fameuse variable résultat
     
    	      lab.setText(s);
    	    }
    Ah oui et ma variable resultat est de type double.

  7. #7
    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
    Et... En partant de la valeur numéroque 2, tu voudrais que ta variable numérique vaille quoi d'autre que 2 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Supprimer les chiffres après la virgule
    Par vbword dans le forum VBA Word
    Réponses: 5
    Dernier message: 27/10/2015, 14h41
  2. Afficher les zéros après la virgule
    Par Madjid52 dans le forum Bases de données
    Réponses: 19
    Dernier message: 26/05/2009, 15h31
  3. Supprimer les zéro après la virgule
    Par Analfabete dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2007, 12h41
  4. Afficher les zéros après la virgule
    Par tonton51 dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2007, 12h42
  5. Supprimer les zéros à gauche du DecimalSeparator
    Par Droïde Système7 dans le forum Langage
    Réponses: 19
    Dernier message: 25/08/2005, 17h35

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