124 votes

Comment puis-je tronquer un double à seulement deux décimales en Java ?

Par exemple, j'ai la variable 3.545555555, que je voudrais tronquer à seulement 3,54.

173voto

Bozho Points 273663

Si vous voulez cela à des fins d'affichage, utilisez java.text.DecimalFormat :

  new DecimalFormat("#.##").format(dblVar);

Si vous en avez besoin pour les calculs, utilisez java.lang.Math :

  Math.floor(value * 100) / 100;

47voto

Cedric Dubourg Points 71
DecimalFormat df = new DecimalFormat(fmt);
df.setRoundingMode(RoundingMode.DOWN);
s = df.format(d);

Vérifiez les RoundingMode et DecimalFormat .

30voto

Mani Points 1692

Bit Old Forum, aucune des réponses ci-dessus n'a fonctionné pour les valeurs positives et négatives (je veux dire pour le calcul et juste pour tronquer sans arrondir). Du lien Comment arrondir un nombre à n décimales en Java

 private static BigDecimal truncateDecimal(double x,int numberofDecimals)
{
    if ( x > 0) {
        return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_FLOOR);
    } else {
        return new BigDecimal(String.valueOf(x)).setScale(numberofDecimals, BigDecimal.ROUND_CEILING);
    }
}

Cette méthode a bien fonctionné pour moi.

 System.out.println(truncateDecimal(0, 2));
    System.out.println(truncateDecimal(9.62, 2));
    System.out.println(truncateDecimal(9.621, 2));
    System.out.println(truncateDecimal(9.629, 2));
    System.out.println(truncateDecimal(9.625, 2));
    System.out.println(truncateDecimal(9.999, 2));
    System.out.println(truncateDecimal(-9.999, 2));
    System.out.println(truncateDecimal(-9.0, 2));

Résultats :

 0.00
9.62
9.62
9.62
9.62
9.99
-9.99
-9.00

9voto

Michael Borgwardt Points 181658

Notons d' abord que double est une fraction binaire et ne pas vraiment décimales.

Si vous avez besoin de décimales, utilisez un BigDecimal , qui a une setScale() pour la troncature, ou utilisez DecimalFormat pour obtenir un String .

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