Bonjour,
J'ai un problème simple mais pour lequel je ne trouve pas de solution "simple" :
Je cherche à faire un arrondi de 3 chiffres après la virgule.
Je cherche à éviter la manipulation des doubles et j'utilise donc le type BigDecimal.
De ce que je comprend avec un MathContext ou en faisant un setScale() on peut spécifier une précision.
Le problème est que cette précision semble être le nombre de chiffres significatifs et non pas le nombre de chiffres après la virgule. Je m'explique :
Comment faut-il faire pour avoir 0.033 sur la première division ? Y a-t-il une méthode qui permette de limiter le nombre de décimales ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 MathContext MC3 = new MathContext(3, RoundingMode.HALF_UP); BigDecimal bd1 = new BigDecimal("1"); BigDecimal bd30 = new BigDecimal("30"); BigDecimal bdres = bd1.divide(bd30, MC3); System.out.println(bdres.toString()); //==> 0.0333 BigDecimal bd2 = new BigDecimal("1"); BigDecimal bd3 = new BigDecimal("3"); BigDecimal bdres2 = bd2.divide(bd3, MC3); System.out.println(bdres2.toString()); //==> 0.333
(De préférence sans passer par (x*1000 + 0.5)/1000 ou par une chaîne de caractères)
(J'ai cherché dans le forum mais je n'ai rien de trouvé de similaire)
Merci d'avance pour votre aide
Partager