【发布时间】:2013-06-27 07:11:31
【问题描述】:
考虑以下 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 在Ubuntu x64 13.04 下编译,它打印:
16 0.123456789012345678901321800735590983
这告诉我 long double 的权重为 16 个字节,但小数点似乎只能到第 20 位。这怎么可能? 16 个字节对应一个四边形,而一个四边形会给我 33 到 36 个小数。
【问题讨论】:
标签: c floating-point precision long-double