Если вам нужна точность по отношению к значению числа, вы можете сохранить знак и логарифм числа.Арифметика выглядит так: log(x*y)=log(x)+log(y)
и log(x+y)=log(x)+log(1+e**(log(y)-log(x)))
.Это предполагает 0<y<x
.Другие случаи аналогичны.Было бы легко реализовать класс в C ++, как этот, который будет хранить до e**biggest_positive_double
.