C99 long double 的一个问题。。
我现在正在看<C Primer Plus>这本书,看到了第60页的地方,有这么一个题目,也不算是题目,反正就是这种示范。程序代码:
#include <stdio.h> int main(void){ float aboat=32000.0; double abet=2.14e9; long double dip=5.32e-5; printf("%f can be writen %e\n",aboat,aboat); printf("%f can e written %e\n",abet,abet); printf("%f can be written %e\n",dip,dip); getch(); return 0; }
他的输出结果是:
32000.000000 can be writen 3.200000e+04
2140000000.000000 can e written 2.140000e+09
0.000053 can be written 5.320000e-05
就是上面这句出了问题。
我这里的输出结果确是:
32000.000000 can be writen 3.200000e+04
2140000000.000000 can e written 2.140000e+09
-195022851250969750000000000000000000000000000000000000000000000000000000000000000 can be written 2.725000e+002
怎么回事?
为什么输出结果错了?
但是我把程序中的
long double dip=5.32e-5;
改成
double dip=5.32e-5;
输出结果就正确了。望高手解答。