73 votes

rond double à deux décimales en java

ok c'est ce que j'ai fait pour arrondir un double à 2 décimales,

 amount = roundTwoDecimals(amount);

public double roundTwoDecimals(double d) {
    DecimalFormat twoDForm = new DecimalFormat("#.##");
    return Double.valueOf(twoDForm.format(d));
}
 

Fonctionne très bien si montant = 25,3569 ou quelque chose comme ça. Mais si montant = 25,00 ou montant = 25,0, alors je reçois 25,0! Ce que je veux, c'est à la fois arrondir et mettre en forme avec 2 décimales. Désolé si ma question n'est pas claire. J'apprécierais toute aide.

62voto

Kaspar Points 131

Il suffit d'utiliser: (facile comme bonjour)

 double number = 651.5176515121351;

number = Math.round(number * 100);
number = number/100;
 

La sortie sera 651.52

24voto

Rob Points 3700

Tu fais de l'argent? Créer une chaîne, puis la reconvertir est très compliqué.

Utilisez BigDecimal. Cela a été discuté assez longuement. Vous devriez avoir une classe d'argent et le montant devrait être un BigDecimal.

Même si vous ne faites pas d'argent, considérez BigDecimal.

20voto

Mitch Wheat Points 169614

Utilisez un espace réservé pour les chiffres ( 0 ), comme pour ' # ' les zéros à la fin / précédant apparaissent comme absents:

 DecimalFormat twoDForm = new DecimalFormat("#.00");
 

8voto

EJP Points 113412

Vous ne pouvez pas "arrondir un double à [nombre de] décimales", car les doubles n'ont pas de décimales. Vous pouvez convertir un double en chaîne de base 10 avec N décimales, car la base 10 a des décimales, mais lorsque vous le convertissez, vous revenez en double, avec des fractions binaires .

3voto

xjodoin Points 53

Vous pouvez utiliser org.apache.commons.math.util.MathUtils à partir d'apache common

double round = MathUtils.round(double1, 2, BigDecimal.ROUND_HALF_DOWN);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X