#include <stdio.h> int main() { double sum = 1; double term = 1; int k = 0; for(; k < 10000; ++k) { term = term*2*(k+1)*(k+1)/((2*k+2)*(2*k+3)); sum = (long double) sum+term; } sum *= 2; printf("%Lf", (long double) sum); return 0; }
So if i remvoe the (long doubles) the value will be as expected, but long double turns it to 0.000 for some reason?
#How does this become zero just by adding long double
6 messages · Page 1 of 1 (latest)
When your question is answered use !solved to mark the question as resolved.
Remember to ask specific questions, provide necessary details, and reduce your question to its simplest form. For tips on how to ask a good question use !howto ask.
;compile
#include <stdio.h>
int main() {
double sum = 1;
double term = 1;
int k = 0;
for (; k < 10000; ++k) {
term = term * 2 * (k + 1) * (k + 1) / ((2 * k + 2) * (2 * k + 3));
sum = (long double)sum + term;
}
sum *= 2;
printf("%Lf", (long double)sum);
return 0;
}
Program Output
3.141593
hisarya | 44ms | c | x86-64 gcc 14.2 | godbolt.org
unable to reproduce
because long double is broken on windows