C语言中关于long double 的有关问题

C语言中关于long double 的问题
#include<stdio.h>
main()
{
long double x;
x=2222222222.222226666L;
printf("x=%f\n",x);
}
x=2222222222.222227
Press any key to continue
问:Long double 是18~19位。书中说“在编写实型常量时,L表示该常量为long double长双精度类型”。
为什么结果不会是 x=2222222222.222226666  呢?
c long double

------解决方案--------------------
long double 用%Lf 输出 
另外 默认输出小数位数太短 
%.9Lf 就能看到你想看到的 

------解决方案--------------------
long doubleC99中新增的数据类型,
但对long double的处理,取决于编译器。
ANSI C标准规定了double变量存储为IEEE 64 位(8 个字节)浮点数值,
但并未规定long double的确切精度。所以对于不同平台可能有不同的实现。
有的是8字节,有的是10字节,有的是12字节或16字节。
规定long double的精度不少于double的精度,就像int和long int一样。
关于具体的编译器的情况,可以打印 sizeof(long double)得知
------解决方案--------------------
对于不同平台 输出的答案是不同的 
而且long double 整个的位数是有限的 精度不是高的 
如果想弄高精度的就要用字符串做了
------解决方案--------------------
话说,printf("%f"),这玩意儿,貌似有四舍五入的功能.