读书人

初学C学到long double部类。 long d

发布时间: 2013-01-02 13:08:44 作者: rapoo

初学C,学到long double类型。 long double dip = 5.32e5; printf("%Lf can be written %Le\n"
long double dip = 5.32e-5; printf("%Lf can be written %Le\n",dip,dip);//这句代码第一个dip打印的值是
-1950228512509697500000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000.000000
can be written 2.725000e+002

跟上显示的结果不一样??问题补充:
书是:C primer plus long double改为double显示的结果倒是跟书上的一样。。

printf("%Lf can be written %Le\n",dip,dip);
改成
printf("%f can be written %e\n",dip,dip);

printf("%lf can be written %le\n",dip,dip);

都不行。。。


[解决办法]
你用的是什么编译器?
我在CodeBlocks上试了一下,跟你是一样的出错。
在vc6.0上试了一下,跟书上是一样的结果。
不过,不明白C语言有没有对这个情况进行说明。

希望对此问题有深入认识的人给说一下。
目前只能少用long double。实际上也很少要打印这么大的数据。
如果非要这么大的数据,可以自己构造数据类型。嗯,这个可能还有点烦。
[解决办法]
long double貌似是c99标准里面新增的类型吧,跟long long貌似是一起加进去的
可能你用的编译器不支持c99标准,有可能只支持c89的标准

读书人网 >C语言

热点推荐