web-dev-qa-db-fra.com

Afficher la décimale d'un double seulement si nécessaire

J'ai eu ce problème avec double (décimales).
Quand un double = 1.234567 J'utilise alors String.format("%.3f", myString);
Le résultat est donc 1,234 

Mais quand mon double est 10
Le résultat sera 10 000
Je veux que ce soit 10

Est-ce une façon de dire qu'il n'a besoin que de montrer les décimales quand c'est "utile"?

J'ai vu quelques articles à ce sujet, mais c'était en php ou en c #, je ne pouvais pas trouver quelque chose pour Android/Java à ce sujet (peut-être que je ne suis pas très beau).

J'espère que vous pourrez m'aider avec ça.

Edit, pour l'instant j'utilise quelque chose comme ceci: myString.replace(",000", "");
Mais je pense que leur code est plus "convivial" pour cela.

24
Bigflow

Le DecimalFormat avec le paramètre # est le chemin à parcourir:

public static void main(String[] args) {

        double d1 = 1.234567;
        double d2 = 2;
        NumberFormat nf = new DecimalFormat("##.###");
        System.out.println(nf.format(d1));
        System.out.println(nf.format(d2));
    }

Aura pour résultat

1.235
2
76
jolivier

Ne pas utiliser les doubles. Vous pouvez perdre de la précision. Voici une fonction d'usage général.

public static double round(double unrounded, int precision, int roundingMode)
{
    BigDecimal bd = new BigDecimal(unrounded);
    BigDecimal rounded = bd.setScale(precision, roundingMode);
    return rounded.doubleValue();
}

Vous pouvez l'appeler avec

round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);

"précision" étant le nombre de points décimaux que vous désirez.

Copier à partir d'ici.

2
Chirag

Essayez-le

double amount = 1.234567 ;
  NumberFormat formatter = new DecimalFormat("##.###");
  System.out.println("The Decimal Value is:"+formatter.format(amount));
0
Mohammod Hossain