考虑以下 C 代码:
#include <stdio.h>
int main(int argc, char* argv[])
{
const long double ld = 0.12345678901234567890123456789012345L;
printf("%lu %.36Lf\n", sizeof(ld), ld);
return 0;
}
gcc 4.8.1
用under编译Ubuntu x64 13.04
,它打印:
16 0.123456789012345678901321800735590983
这告诉我 long double 的权重为 16 个字节,但小数点似乎只能到第 20 位。这怎么可能?16 个字节对应一个四边形,一个四边形会给我 33 到 36 个小数。