Lo specificatore di formattazione %a
è nuovo in C99. Stampa il numero in virgola mobile in formato esadecimale. Questo non è qualcosa che useresti per presentare i numeri agli utenti, ma è molto utile per casi di utilizzo tecnico/tecnico.
A titolo di esempio, questo codice:
printf("pi=%a\n", 3.14);
stampe:
pi=0x1.91eb86p+1
L'ottimo articolo collegato nei commenti spiega che questo deve essere letto "1.91EB86 * 2 "(ovvero, p
corrisponde a power-of-two
il numero in virgola mobile viene aumentato a). In questo caso, "1.91EB86 " è "1.5700000524520874 ". Moltiplicalo per "2 " e ottieni "3.140000104904175 ".
Si noti che questo ha anche la proprietà utile di conservare tutti i bit di precisione e presentarli in modo robusto.
È possibile leggere ulteriori informazioni sulle costanti in virgola mobile esadecimali qui: http://www.exploringbinary.com/hexadecimal-floating-point-constants/. –