Bonjour,
j'aimerais calculer une valeur approchée de PI (100 chiffres aprés la virgule), en utilisant la formule:
j'ai utilisé la classe BigDecimal.
voici mon essai:
résultats obtenus:
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); } }
les questions qui se posent sont:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 0E-100 0.0000200001000015000225003875070626284396390861793124959014337545572838089788991370816448576580885970
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.
Partager