#include
#include
int main(int argc,char* argv[]) {
int i;
double sum;
int width;
if(argc<2)width=100;
else width=atoi(argv[1]);
for(i=0,sum=0;i<width;i++)sum+=sqrt((double)width*width-(double)i*i);
printf("%1.15f\n",sum*4/width/width);
return 0;
}
でも単純なだけあって精度がいまいち...
半径をコマンドラインで指定するようになっているのだが、
1000000000に設定しても3.141592655592264と出てくる。
デフォルトの100なんかだと3.160417031779045という値だ。
せめてdouble型の範囲いっぱいまでは行ってほしかったです。