2011-01-19 6 views
12

j'ai une variable de type double, je dois l'imprimer dans jusqu'à 3 décimales de précision, mais il ne devrait pas avoir de zéros ...nombres à virgule flottante

par exemple. J'ai besoin

2.5 // not 2.500 
2 // not 2.000 
1.375 // exactly till 3 decimals 
2.12 // not 2.120 

J'ai essayé d'utiliser DecimalFormatter, je le fais mal?

DecimalFormat myFormatter = new DecimalFormat("0.000"); 
myFormatter.setDecimalSeparatorAlwaysShown(false); 

Merci. :)

Répondre

21

Essayez le modèle "0.###" au lieu de "0.000":

import java.text.DecimalFormat; 

public class Main { 
    public static void main(String[] args) { 
     DecimalFormat df = new DecimalFormat("0.###"); 
     double[] tests = {2.50, 2.0, 1.3751212, 2.1200}; 
     for(double d : tests) { 
      System.out.println(df.format(d)); 
     } 
    } 
} 

sortie:

2.5 
2 
1.375 
2.12 
+0

@ st0le, bravo! –

4

classe Utilisez NumberFormat.

Exemple:

double d = 2.5; 
    NumberFormat n = NumberFormat.getInstance(); 
    n.setMaximumFractionDigits(3); 
    System.out.println(n.format(d)); 

sortie sera 2,5, pas 2,500.

6

Votre solution est presque correcte, mais vous devez remplacer les zéros '0' au format décimal par des hachures "#".

Il devrait ressembler à ceci:

DecimalFormat myFormatter = new DecimalFormat("#.###"); 

Et cette ligne n'est pas necesary (comme decimalSeparatorAlwaysShown est false par défaut):

myFormatter.setDecimalSeparatorAlwaysShown(false); 

Voici bref résumé de javadocs:

Symbol Location Localized? Meaning 
0 Number Yes Digit 
# Number Yes Digit, zero shows as absent 

Et le lien vers javadoc: DecimalFormat

+0

+1 pour les infos supplémentaires. – st0le

+0

Comment imprimer le nombre à virgule flottante tel qu'il est 220.90? –

Questions connexes