El especificador de formato %a
es nuevo en C99. Imprime el número de punto flotante en forma hexadecimal. Esto no es algo que utilizaría para presentar números a los usuarios, pero es muy útil para casos de uso técnico o de bajo perfil.
A modo de ejemplo, este código:
printf("pi=%a\n", 3.14);
impresiones:
pi=0x1.91eb86p+1
El excelente artículo relacionado en los comentarios explica que esto se debe leer "1.91EB86 * 2 1 "(es decir, el p
es para power-of-two
el número de punto flotante se eleva a). En este caso, "1.91EB86 " es "1.5700000524520874 ". Multiplique esto por "2 ", y obtendrá "3.140000104904175 ".
Tenga en cuenta que esto también tiene la útil propiedad de preservar todos los bits de precisión y presentarlos de manera robusta.
Puede leer más acerca de las constantes de coma flotante hexadecimales aquí: http://www.exploringbinary.com/hexadecimal-floating-point-constants/. –