Я написал программу для вычисления номера PI с помощью формулы Лейбница:
[
Я написал for-loop с типом инициализации "int", цикл работает отлично, но когда я изменил тип инициализации на "long", результат изменился. Это происходит только тогда, когда цикл превышает миллиард. Это делает "int-loop" вычисляет PI более точным, чем "длинный цикл". Я не знаю, почему это происходит. Пожалуйста, помогите мне понять эту проблему. Благодарю! и вот мой код.
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);
}
И результат:
result1 3.141592653576877
result2 3.1415926529660116
pi 3.141592653589793