long double 高精度数据的使用

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*/ 

       gcc -std=c99 Ldouble.c -o L
    /*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;
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值