1 pièce(s) jointe(s)
BigDecimal pour calculer une valeur approchée de PI
Bonjour,
j'aimerais calculer une valeur approchée de PI (100 chiffres aprés la virgule), en utilisant la formule:
Pièce jointe 147204
j'ai utilisé la classe BigDecimal.
voici mon essai:
Code:
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:
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.