Я читаю, что когда xoshiro++ реализован в C для генерации однородных чисел типа double в единичном интервале, 64-битное целое число без знака x должно быть преобразовано в 64-битное число типа double с помощью выражения (x >> 11) * 0x1.0p-53
. Каково соответствующее выражение, если (по извращенным причинам) я хочу реализовать это на Python?
(x >> 11) * float.fromhex('0x1p-53')
fromhex
приведен как способ интерпретации шестнадцатеричного литерала с плавающей запятой в этой документации Python.
Вы также можете использовать (x >> 11) * 0.00000000000000011102230246251565404236316680908203125
. Однако я не знаю, будут ли реализации Python обязательно преобразовывать этот литерал без ошибок. Python не имеет формальной спецификации, и то, что в документации говорится о числах с плавающей запятой, является слабым.
Спасибо, это именно то, что я искал, и я ценю дополнительную информацию.