#include<stdio.h>
int main(){
double pi=0;
int l,h;
char tmp[10];

printf("第何項まで? \n");
fgets(tmp,sizeof(tmp),stdin);
sscanf(tmp,"%d",&l);

for(h=1; h <= l ; h += 2){
if( h % 4 == 1){
pi=1.0/h + pi;
}
if( h % 4 == 3){
pi= - 1.0/h + pi;
}
printf("%d乗の項まで pi = %1.80lf\n",h,4*pi);
}
}

興味本意でこのようなプログラムを作ってみました。
piを求めると言うより,arctan1のテイラーの収束の遅さを知るためのものです。
これをコンパイルして実行すると,48桁までしか正しい数字が出て来なく,
以下は0が並んでしまいます。
手元の資料にdoubleの上限値が1.7E+308,精度が15桁とあるのですが,
なぜ,48桁程度までしか正しく計算できないのでしょうか?