Car*_*los 49 c pi long-integer
我正在做一个接近PI的程序,我试图使用很长时间,但它不起作用.这是代码
#include<stdio.h>
#include<math.h>
typedef long long num;
main(){
num pi;
pi=0;
num e, n;
scanf("%d", &n);
for(e=0; 1;e++){
pi += ((pow((-1.0),e))/(2.0*e+1.0));
if(e%n==0)
printf("%15lld -> %1.16lld\n",e, 4*pi);
//printf("%lld\n",4*pi);
}
}
Run Code Online (Sandbox Code Playgroud)
kar*_*doc 63
%lld是标准的C99方式,但这对我正在使用的编译器不起作用(mingw32-gcc v4.6.0).在这个编译器上执行它的方法是:%I64d
试试这个:
if(e%n==0)printf("%15I64d -> %1.16I64d\n",e, 4*pi);
Run Code Online (Sandbox Code Playgroud)
和
scanf("%I64d", &n);
Run Code Online (Sandbox Code Playgroud)
我知道以完全可移植的方式执行此操作的唯一方法是使用中的定义<inttypes.h>.
在你的情况下,它看起来像这样:
scanf("%"SCNd64"", &n);
//...
if(e%n==0)printf("%15"PRId64" -> %1.16"PRId64"\n",e, 4*pi);
Run Code Online (Sandbox Code Playgroud)
这真的很难看......但至少它是便携式的.
首先,%d 代表一个int
所以%1.16lld没有意义,因为 %d 是一个整数
你所做的 typedef 也是不必要的,直接使用类型,可以使代码更具可读性。
您想要使用的是 type double,用于计算 pi 然后使用%for %1.16f。
| 归档时间: |
|
| 查看次数: |
122103 次 |
| 最近记录: |