Какой размер long double предоставляет ваша реализация (или, что эквивалентно, какое значение она показывает для LDBL_DIGITS)? Часто это 80-битный тип с ~ 20 значащими (десятичными) цифрами. В частности, обратите внимание, что тип с плавающей запятой будет разделен между мантиссой (значимым) и показателем степени, поэтому, если его общий размер составляет 12 байт, он будет , а не иметь 12-разрядное значение, поэтому не ожидаем увидеть точность 12 байт.