Спецификатор форматирования %a
является новым в C99.Он печатает число с плавающей точкой в шестнадцатеричной форме.Это не то, что вы бы использовали для представления номеров пользователям, но это очень удобно для скрытых / технических случаев использования.
Например, этот код:
printf("pi=%a\n", 3.14);
печатает:
pi=0x1.91eb86p+1
Отличная статья, ссылка на которую содержится в комментариях, объясняет, что это следует читать "1.91EB86 16 * 2 1 " (p
для power-of-two
число с плавающей запятой увеличивается до ).В этом случае «1.91EB86 16 » равно «1.5700000524520874 10 ».Умножьте это на «2 1 », и вы получите «3.140000104904175 10 ».
Обратите внимание, что это также имеет полезное свойство сохранения всех битов точности,и представляя их в убедительной форме.