Stricto sensu, ваш вопрос не имеет никакого смысла. Плавающее число не является целым числом, поэтому оно не может быть представлено в шестнадцатеричном формате (основание 16).
Сначала прочитайте http://floating -point-gui.de / .
Возможно, вы хотите вывести число с плавающей запятой в шестнадцатеричном обозначении . Затем прочитайте документацию printf и, если ваша реализация C совместима с C99, используйте %a
, например printf("x=%a\n", x);
.
Может быть, вы хотите вывести в шестнадцатеричном виде побитовое представление вашего float
. Это будет зависеть от endianess вашего компьютера (и от того факта, что он использует IEEE754 для представления с плавающей запятой), поэтому выходные данные не будут одинаковыми на x86 и на рука. Вы можете использовать union
тип :
union {
unsigned u;
float f;
} un;
un.f = x;
printf("%#x\n", un.u);
Конечно, это имеет смысл, только если sizeof(unsigned)
совпадает с sizeof(float)
(и даже в этом случае поведение определяется реализацией).