Comment formater un nombre en Java?
Quelles sont les «meilleures pratiques»?
Dois-je arrondir un nombre avant de le formater?
32.302342342342343
=>32.30
.7323
=>0.73
etc.
java
number-formatting
ScArcher2
la source
la source
Double.valueOf
place denew Double(number).doubleValue()
. La dernière ligne du dernier exemple serait doncdouble dd2dec = Double.valueOf(df2.format(dd));
Vous et
String.format()
serez de nouveaux meilleurs amis!https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
la source
String.format
est pour formater des chaînes, pas des nombres.DecimalFormat
. EtDecimalFormat
est légèrement plus rapide queString.format
. Un simpleSystem.currentTimeMillis
diff révèle cela.Sachez que les classes qui descendent de NumberFormat (et de la plupart des autres descendants de Format) ne sont pas synchronisées. C'est une pratique courante (mais dangereuse) de créer des objets de format et de les stocker dans des variables statiques dans une classe util. En pratique, cela fonctionnera presque toujours jusqu'à ce qu'il commence à subir une charge importante.
la source
Chiffres ronds, oui. Ceci est la principale source d'exemple .
la source
Essaye ça:
Simple et efficace.
la source
Utilisez DecimalFormat .
la source
Il existe deux approches dans la bibliothèque standard. La première consiste à utiliser java.text.DecimalFormat. Les autres méthodes plus cryptiques (String.format, PrintStream.printf, etc.) basées sur java.util.Formatter devraient satisfaire les programmeurs C (ish).
la source
Comme Robert l'a souligné dans sa réponse: DecimalFormat n'est ni synchronisé ni l'API ne garantit la sécurité des threads (cela peut dépendre de la version / du fournisseur de JVM que vous utilisez).
Utilisez plutôt le Numberformatter de Spring , qui est thread-safe.
la source
Par exemple, si la valeur double passée dans la méthode formatDouble () est 345,9372, le résultat sera le suivant: 345,937 De même, si la valeur 0,7697 est passée à la méthode, le résultat suivant sera: 0,770
la source