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 десятичных знаков.