печать с плавающей запятой, сохранение точности

Я пишу программу, которая печатает литералы с плавающей запятой для использования внутри другой программы.

Сколько цифр мне нужно напечатать, чтобы сохранить точность исходного числа с плавающей запятой. ?

Поскольку число с плавающей запятой имеет 24 * (log(2) / log(10)) = 7,2247199десятичных разрядов точности, моя первоначальная мысль заключалась в том, что напечатать 8 dig его должно быть достаточно. Но если мне не повезет, эти 0,2247199будут распределены слева и справа от 7 значащих цифр, поэтому мне, вероятно, следует напечатать 9 десятичных цифр.

Верен ли мой анализ? Достаточно ли 9 десятичных цифр для всех случаев? Например, printf("%.9g", x);?

Существует ли стандартная функция, которая преобразует число с плавающей запятой в строку с минимальным количеством десятичных цифр, необходимых для этого значения, в тех случаях, когда достаточно 7 или 8, чтобы я не печатал ненужные цифры?

Примечание. Я не могу использовать шестнадцатеричные литералы с плавающей запятой, поскольку стандарт C++ их не поддерживает.

19
задан mskfisher 5 June 2012 в 12:26
поделиться