Перейти к содержанию
    

Константа одинарной точности в шестнадцатеричной записи.

Подскажите плиз как это записать.

Нечто специфическое и редкое, которое точно существует. Выглядит наверное так:

#define  ttgg  0f4a52bc77

Где-то слышал что подобный хак применялся в библиотеках математики, а вот теперь надо - а вспомнить не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Написать в коде:

union {
  float x;
  u32 y;
} const z = {3.14};

Запустить отладчик и посмотреть в его окне "Watch" чему равно z.y.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотреть знаю как, мне нужно чтобы точно было, без вариантов. Числа float очень редко имеют точное представление в десятичной системе. Например 0.2f храниться как 0.20000000298023223876953125f с ошибкой к 0.2f в 2.98023223876953125e-9. Очень очень длинные числа.

А мне нужно записать константу без вариантов двойного преобразования, сразу  0x3e4ccccd. Но так чтобы GCC не матерился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в примере выше z.y = 0x3e4ccccd;

Изменено пользователем Immortal_Buka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Константа и объединение - это разные вещи. К тому-же мне не требуется иного применения кроме изначального задуманного float. 

#define  F_value  0x3e4ccccd

F_value будет использоваться как int32_t, а мне нужно чтоб использовалось как float.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-то понял, что нужно ТС-у?:unknw:
 

1 час назад, AVI-crak сказал:

...мне нужно чтобы точно было, без вариантов...

Что значит "чтобы точно было"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

#define HEXFLOAT(x) ((union {uint32_t i; float f;}) {x}.f)
#define F_value HEXFLOAT(0x3e4ccccd)
#define F_value2 0x0.CCCCCDp-2
  
int main(void){
  printo(F_value,"\n");
  printo(F_value2,"\n"); 
  /// 200.00000298e-3
  /// 200.00000298e-3

Работает!!!

Хотя мне нужно это https://stackoverflow.com/questions/4825824/hexadecimal-floating-constant-in-c

Теперь осталось понять как записать отрицательное число с плавающей точкой. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...