Первый пример результат стандартного printf:
long double tt = 0.00000000000000123;
printf("%d\n", printf("%'023.60Lf\n",tt));
.......................
0,000000000000001230000000000000067967510165557714273707338505
63
Второй пример результат моего printf:
long double tt = 0.00000000000000123;
printf("%d\n", ft_printf("%'023.60Lf\n",tt));
.......................
0,000000000000001230000000000000067996823449600896083211409859
63
Как не сложно заметить при большой точности, мой результат отличается от результата библиотечного printf.
Насколько я понимаю это возникает из-за того, что я не компенсирую погрешность при своих вычислениях.
В своем printf для перевода числа в строку я использую: деление, умножение и вычитание.
Про компенсацию погрешностей я нашел только вот это:
ссылка.
Может у кого есть ссылка на больший материал про компенсацию погрешности - в частности в случае с вычитанием? Или еще лучше, если кто-нибудь в курсе как printf борется с погрешностями?