История изменений
Исправление praseodim, (текущая версия) :
glibc printf может и не поддерживать. В мане нету например. А даже если будет поддерживать - то несовместимо с другими libc. Напиши свой (печатаешь цифру слева от точки, вычитаешь её, умножаешь на 10 и так по циклу).
Порылся, погуглил. Есть вокруг gcc библиотека quadmath, там есть функция quadmath_snprintf https://gcc.gnu.org/onlinedocs/libquadmath/quadmath_005fsnprintf.html
В общем, добавляется что-то вроде
#include <quadmath.h>
...
char buf[128];
int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", 46, eps__float128);
if ((size_t) n < sizeof buf)
printf ("%s\n", buf);
Компилировать с - lquadmath - напечатало +9.62964972193617926528e-35
Несколько напрягает, что вроде просто для вычислений она не обязательна, почти лишняя сущность получается.
Может у кого лучшее решение есть? Кроме колхозинга собственной функции.
Исправление praseodim, :
glibc printf может и не поддерживать. В мане нету например. А даже если будет поддерживать - то несовместимо с другими libc. Напиши свой (печатаешь цифру слева от точки, вычитаешь её, умножаешь на 10 и так по циклу).
Порылся, погуглил. Есть вокруг gcc библиотека quadmath, там есть функция quadmath_snprintf https://gcc.gnu.org/onlinedocs/libquadmath/quadmath_005fsnprintf.html
В общем, добавляется что-то вроде
#include <quadmath.h>
...
char buf[128];
int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", 46, eps__float128);
if ((size_t) n < sizeof buf)
printf ("%s\n", buf);
Компилировать с -mquadmath - напечатало +9.62964972193617926528e-35
Несколько напрягает, что вроде просто для вычислений она не обязательна, почти лишняя сущность получается.
Может у кого лучшее решение есть? Кроме колхозинга собственной функции.
Исходная версия praseodim, :
glibc printf может и не поддерживать. В мане нету например. А даже если будет поддерживать - то несовместимо с другими libc. Напиши свой (печатаешь цифру слева от точки, вычитаешь её, умножаешь на 10 и так по циклу).
Порылся, погуглил. Есть вокруг gcc библиотека quadmath, там есть функция quadmath_snprintf https://gcc.gnu.org/onlinedocs/libquadmath/quadmath_005fsnprintf.html
В общем, добавляется что-то вроде
#include <quadmath.h>
...
char buf[128];
int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", 46, eps__float128);
if ((size_t) n < sizeof buf)
printf ("%s\n", buf);
Компилировать с -mquadmath - напечатало +9.62964972193617926528e-35