J'ai écrit un programme pour calculer le nombre PI avec Leibniz formule:
[
J'ai écrit une boucle avec le type d'initialisation est "int" , la boucle fonctionne bien mais quand j'ai changé l'initialisation de type "long", le résultat est changé. Cela se produit uniquement lorsque la boucle de temps de plus d'un milliard de dollars. Cela rend le "int" en boucle calcule PI plus précis que "long" en boucle. Je ne sais pas pourquoi cela se produit. Merci de m'aider à comprendre ce problème. Merci! et voici mon code.
public static void main(String[] args) {
double result1 = 0;
double result2 = 0;
double sign = 1;
for (int i = 0; i <= 1607702095; i++) {
result1 += sign/(2 * i + 1);
sign *= -1;
}
sign = 1;
for (long j = 0; j <= 1607702095; j++) {
result2 += sign/(2 * j + 1);
sign *= -1;
}
System.out.println("result1 " + result1 * 4);
System.out.println("result2 " + result2 * 4);
System.out.println("pi " + Math.PI);
}
Et le résultat est:
result1 3.141592653576877
result2 3.1415926529660116
pi 3.141592653589793