Bonjour,
j'aimerais calculer une valeur approchée de PI (100 chiffres aprés la virgule), en utilisant la formule:
Nom : PI.jpg
Affichages : 413
Taille : 3,9 Ko
j'ai utilisé la classe BigDecimal.
voici mon essai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test {
        public static  void main(String [] args){
            int arrondi = BigDecimal.ROUND_HALF_DOWN;
            int precision= 100;
            BigDecimal sp = BigDecimal.ZERO, r;
            BigDecimal quatre = new BigDecimal(4).setScale(precision);
            BigDecimal un = BigDecimal.ONE;
            BigDecimal deux = new BigDecimal(2).setScale(precision);
            BigDecimal unDemi = un.divide(deux,arrondi).setScale(precision);
            System.out.println(unDemi);
            BigDecimal n = new BigDecimal(100000);
                for(int i = 1; i<=n.doubleValue();i++){
                r = new BigDecimal(i);
                r = r.subtract(unDemi);
                r = r.divide(n, arrondi);
                r = r.pow(2);
                r = r.add(BigDecimal.ONE).multiply(n);
                sp = sp.add(quatre).divide(r,arrondi);
                }
            System.out.println(sp);
        }
 
}
résultats obtenus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
0E-100
0.0000200001000015000225003875070626284396390861793124959014337545572838089788991370816448576580885970
les questions qui se posent sont:
1- pour quoi le calcul de 1/2 avec la classe BigDecimal a donné 0.
2- pour quoi ce programme ne donne pas le résultat attendu.