Я пишу программу, которая печатает литералы с плавающей запятой для использования внутри другой программы.
Сколько цифр мне нужно напечатать, чтобы сохранить точность исходного числа с плавающей запятой. ?
Поскольку число с плавающей запятой имеет 24 * (log(2) / log(10)) = 7,2247199
десятичных разрядов точности, моя первоначальная мысль заключалась в том, что напечатать 8 dig его должно быть достаточно. Но если мне не повезет, эти 0,2247199
будут распределены слева и справа от 7 значащих цифр, поэтому мне, вероятно, следует напечатать 9 десятичных цифр.
Верен ли мой анализ? Достаточно ли 9 десятичных цифр для всех случаев? Например, printf("%.9g", x);
?
Существует ли стандартная функция, которая преобразует число с плавающей запятой в строку с минимальным количеством десятичных цифр, необходимых для этого значения, в тех случаях, когда достаточно 7 или 8, чтобы я не печатал ненужные цифры?
Примечание. Я не могу использовать шестнадцатеричные литералы с плавающей запятой, поскольку стандарт C++ их не поддерживает.