Это логично, поскольку тип, который является экземпляром Integral
, ну ... обычно является "целым". Таким образом, это означает, что он ведет себя как Integer
. Примеры Integral
, Integer
, Int
, Word8
и т. Д. A Float
, Double
и т. Д. Не являются интегральными, как говорит ошибка.
Вы можете использоватьfromIntegral :; (Num b, Integral a) => a -> b
для преобразования чего-либо, имеющего тип Integral
, в тип Num
:
r :: Double -> Double
r = <b>fromIntegral</b> . round
Например:
Prelude> r 14.25
14.0