代码之家  ›  专栏  ›  技术社区  ›  r.e.s.

在Python中,什么表达式等效于“0x1.0p-53”?

  •  0
  • r.e.s.  · 技术社区  · 1 周前

    我在读的时候 xoshiro++ 在C中实现以在单位间隔中生成统一的双精度,应使用以下表达式将64位无符号整数x转换为64位双精度 (x >> 11) * 0x1.0p-53 。如果(出于不正当的原因)我想在Python中实现这一点,那么对应的表达式是什么?

    1 回复  |  直到 1 周前
        1
  •  1
  •   Eric Postpischil    1 周前

    (x >> 11) * float.fromhex('0x1p-53')

    fromhex 作为在中解释十六进制浮点文字的一种方法 this Python documentation .

    您也可以使用 (x >> 11) * 0.00000000000000011102230246251565404236316680908203125 然而,我不知道Python实现是否一定会毫无错误地转换该文本。Python没有正式的规范,文档中对浮点的描述也很薄弱。