определить двойную константу как шестнадцатеричную?

Я хотел бы иметь ближайшее число ниже 1.0 в виде числа с плавающей запятой. Читая статью в Википедии о IEEE-754 , мне удалось выяснить, что двоичное представление для 1.0 - 3FF0000000000000 , поэтому ближайшее двойное значение на самом деле 0x3FEFFFFFFFFFFFFF .

Единственный известный мне способ инициализировать двойное число этими двоичными данными - это:

double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;

Что довольно громоздко в использовании.

Есть ли лучший способ определить это двойное число, если возможно, в качестве константы?

6
задан Mark Dickinson 9 May 2018 в 17:19
поделиться