Для получения 24,00000000000000000000000001 использовать длинную арифметику с фиксированной запятой.
А для точного ответа использовать рациональные числа (хранящиеся в виде числитель/знаменатель). 0.08(3) - это же 1/12.
Думаю, для С++ есть готовые реализации таких модулей.
Точность double - порядка 16-17 значащих десятичных цифр. Нельзя ожидать 28 точных цифр ответа.