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.
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
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.
Essayez-le
double amount = 1.234567 ;
NumberFormat formatter = new DecimalFormat("##.###");
System.out.println("The Decimal Value is:"+formatter.format(amount));