poj1191 棋盘覆盖 用到了这种数据类型
我们暂且不说这道题:本文主要讨论long double 的使用。
一、看一下double的使用,double 只能精确到小数点后 15位
//a的实际大小为: 3. 1415926535 8979323846 2643383279 5028841971
double a;
a=(double)acos(-1);
//cout<<a<<endl;
printf("%.16lf\n",a);
二、long double 据说精确到20位
但在windows下测试出来精度和double一样
gcc -std=c99 Ldouble.c -o L
/*long double 的code*/
/*long double 的code*/
long double a;
a=(long double)acos(-1);
printf("%.20Lf\n",a);
为什么呢?那是因为acos返回的是double。
三、那我们就直接赋值看能输出的精度是多少!
我是在windows下测试的,精度达到20位以上
int main(){
long double a;
a = (long double) 2e-10;
a *= a;
//cout << a << endl;
printf("%.25Lf\n",a);
//输出:0.0000000000 0000000004 00000
return 0;
}