sizeof long double и точность не совпадают?

Рассмотрим следующий код C:

#include 
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

Что говорит мне о том, что длинный двойной вес весит 16 байтов, но десятичные дроби, кажется, подходят только для 20-го места. Как это возможно? 16 байт соответствуют четырехугольнику, а квад дает мне от 33 до 36 десятичных знаков.

Ответы на вопрос(4)

Ваш ответ на вопрос