gpt4 book ai didi

haskell - Haskell 中 float 的十六进制表示

转载 作者:行者123 更新时间:2023-12-04 10:45:32 25 4
gpt4 key购买 nike

我想将 Haskell 浮点数转换为包含标准 IEEE 格式的浮点数的 32 位十六进制表示的字符串。我似乎找不到可以为我做这件事的包。有人知道吗?

我注意到 GHC.Float 提供了一个函数将浮点数分解为其有符号的基数和指数(decodeFloat),但这分别为基数和指数提供了一个 14 位和 8 位十六进制数,这占用了更多超过 32 位。这似乎没有帮助。

如果有更简单的方法可以做到这一点,我没有看到,请告诉我。

最佳答案

float-ieee 包是纯 Haskell-98,但 CPU 非常密集。如果您需要多次执行此操作,并且不介意特定于 GHC,那么您可以使用这样的代码,它会提取 Double 的 IEEE 表示。作为 Word64 :

import GHC.Prim
import GHC.Types
import GHC.Word

encodeIEEEDouble :: Double -> Word64
encodeIEEEDouble (D# x) = W64# (unsafeCoerce# x)

decodeIEEEDouble :: Word64 -> Double
decodeIEEEDouble (W64# x) = D# (unsafeCoerce# x)

您可以为 Float 编写类似的代码和 Word32 .

关于haskell - Haskell 中 float 的十六进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com