AVI-crak 0 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба Подскажите плиз как это записать. Нечто специфическое и редкое, которое точно существует. Выглядит наверное так: #define ttgg 0f4a52bc77 Где-то слышал что подобный хак применялся в библиотеках математики, а вот теперь надо - а вспомнить не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба Написать в коде: union { float x; u32 y; } const z = {3.14}; Запустить отладчик и посмотреть в его окне "Watch" чему равно z.y. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба Посмотреть знаю как, мне нужно чтобы точно было, без вариантов. Числа float очень редко имеют точное представление в десятичной системе. Например 0.2f храниться как 0.20000000298023223876953125f с ошибкой к 0.2f в 2.98023223876953125e-9. Очень очень длинные числа. А мне нужно записать константу без вариантов двойного преобразования, сразу 0x3e4ccccd. Но так чтобы GCC не матерился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Immortal_Buka 0 6 октября, 2021 Опубликовано 6 октября, 2021 (изменено) · Жалоба в примере выше z.y = 0x3e4ccccd; Изменено 6 октября, 2021 пользователем Immortal_Buka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба Константа и объединение - это разные вещи. К тому-же мне не требуется иного применения кроме изначального задуманного float. #define F_value 0x3e4ccccd F_value будет использоваться как int32_t, а мне нужно чтоб использовалось как float. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LMA 1 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба hexadecimal floating point literals? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 1 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба memcpy(&float, &int, 4); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба #define HEXFLOAT(x) ((union {uint32_t i; float f;}) {x}.f) #define F_value HEXFLOAT(0x3e4ccccd) printf("%f", F_value); // 0.2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба Кто-то понял, что нужно ТС-у? 1 час назад, AVI-crak сказал: ...мне нужно чтобы точно было, без вариантов... Что значит "чтобы точно было"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба #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 Теперь осталось понять как записать отрицательное число с плавающей точкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 6 октября, 2021 Опубликовано 6 октября, 2021 · Жалоба Не, походу макрос HEXFLOAT проще в использовании. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться