首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

初学C,学到long double部类。 long double dip = 5.32e5; printf("%Lf can be written %

2013-01-02 
初学C,学到long double类型。 long double dip 5.32e5 printf(%Lf can be written %Le\nlong double d

初学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的标准

热点排行