J'utilise BigDecimal pour obtenir des valeurs de prix. L'exigence est quelque chose comme ça, quelle que soit la valeur que nous recherchons dans la base de données, la valeur affichée doit avoir 2 décimales.
Par exemple:
la valeur récupérée est 1 - doit être affichée comme 1,00
la valeur récupérée est 1,7823 - devrait être affichée comme 1,78
J'utilise setScale(2, BigDecimal.ROUND_HALF_UP)
mais encore quelques endroits, si les données de DB sont un nombre entier alors le même est affiché !!
Je veux dire que si la valeur est 0 à partir de DB, elle s'affiche comme 0 uniquement. Je veux que cela soit affiché comme 0,00
Merci
BigDecimal est immuable, toute opération y compris setScale (2, BigDecimal.ROUND_HALF_UP) produit un nouveau BigDecimal. Le bon code doit être
BigDecimal bd = new BigDecimal(1);
// bd.setScale(2, BigDecimal.ROUND_HALF_UP); bd.setScale does not change bd
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
sortie
1.00
vous pouvez utiliser le format arrondi
BigDecimal bd = new BigDecimal(2.22222);
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP));
J'espère que cela vous aidera.
Pour formater les nombres en Java vous pouvez utiliser:
System.out.printf("%1$.2f", d);
où d est votre variable ou nombre
ou
DecimalFormat f = new DecimalFormat("##.00"); // this will helps you to always keeps in two decimal places
System.out.println(f.format(d));
Vous devez utiliser quelque chose comme NumberFormat
avec les paramètres régionaux appropriés pour format
NumberFormat.getCurrencyInstance().format(bigDecimal);
BigDecimal.setScale fonctionnerait.