Haskell Integral Double 没有实例

Haskell No instance for Integral Double

我正在尝试使用 Haskell 对变量进行舍入。

r :: Double -> Double
r x = round (x)

试图编译这个,我收到以下错误

No instance for (Integral Double) arising from a use of 'round'

我该如何解决这个问题?谢谢!

这是合乎逻辑的,因为作为 Integral 实例的类型通常是 "integral"。因此,这意味着它的行为类似于 IntegerIntegral 的例子有 IntegerIntWord8 等。FloatDouble 等不是整数,例如错误说。

您可以使用 fromIntegral :; (Num b, Integral a) => a -> bIntegral 类型的内容转换为 Numerical 类型:

r :: Double -> Double
r = <b>fromIntegral</b> . round

例如:

Prelude> r 14.25
14.0