Стандартный двойной (64-разрядный) чисел с плавающей точкой в формате IEEE имеет 52 бита значимых, плюс биту невиновного в левом значении. Таким образом, представление может фактически хранить числа с 53 значимыми бинарными цифрами. < /P>
Из-за этого факта в C99 64-разрядное insigned integer x следует преобразовать в 64-разрядное двойное, используя выражение < /p>
Код: Выделить всё
#include
(x >> 11) * 0x1.0p-53
Подробнее здесь: https://stackoverflow.com/questions/795 ... val-0-1-us