在这里看: https://hackage.haskell.org/package/scientific
在这里: https://wiki.haskell.org/Converting_numbers
我希望能够以科学计数形式输入数字作为字符串
Prelude Data.Scientific> read "1e100" :: Scientific
1.0e100
并转换为整数,如下所示:
Prelude Data.Scientific> (read "1e100" :: Scientific ) :: Int
<interactive>:7:2: error:
• Couldn't match expected type ‘Int’ with actual type ‘Scientific’
• In the expression: (read "1e100" :: Scientific) :: Int
In an equation for ‘it’: it = (read "1e100" :: Scientific) :: Int
这似乎不起作用。如何将Scientific类型转换为整数?
答案 0 :(得分:1)
您想使用toUnboundedInteger
(或者也许是toBoundedInteger
,我不确定所绑定的10^e
是指什么)。签名是:
toUnboundedInteger :: Scientific -> Maybe Integer
因此,非正式地,该函数检查Scientific
参数是否实际上是整数(例如,它可以是浮点数)。如果是浮点型,则返回的结果为Nothing
,否则为Just
您期望的整数。