以科学计数法输入数字,转换为Haskell中的整数

时间:2018-10-03 05:44:17

标签: haskell casting

在这里看: 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类型转换为整数?

1 个答案:

答案 0 :(得分:1)

您想使用toUnboundedInteger(或者也许是toBoundedInteger,我不确定所绑定的10^e是指什么)。签名是:

toUnboundedInteger :: Scientific -> Maybe Integer

因此,非正式地,该函数检查Scientific参数是否实际上是整数(例如,它可以是浮点数)。如果是浮点型,则返回的结果为Nothing,否则为Just您期望的整数。