我遇到了一些我刚接触的函数的问题,它是fromIntegral函数。
基本上我需要接受两个Int参数并返回数字的百分比,但是当我运行我的代码时,它一直给我这个错误:
代码:
percent :: Int -> Int -> Float
percent x y = 100 * ( a `div` b )
where a = fromIntegral x :: Float
b = fromIntegral y :: Float
错误:
No instance for (Integral Float)
arising from a use of `div'
Possible fix: add an instance declaration for (Integral Float)
In the second argument of `(*)', namely `(a `div` b)'
In the expression: 100 * (a `div` b)
In an equation for `percent':
percent x y
= 100 * (a `div` b)
where
a = fromIntegral x :: Float
b = fromIntegral y :: Float
我读了'98 Haskell的前奏,它说有一个叫做fromInt的函数,但它从来没有用过,所以我不得不接受这个,但它仍然没有用。救命啊!
答案 0 :(得分:15)
查看div
的类型:
div :: Integral a => a -> a -> a
您无法将输入转换为Float
,然后使用div
。
改为使用(/)
:
(/) :: Fractional a => a -> a -> a
以下代码有效:
percent :: Int -> Int -> Float
percent x y = 100 * ( a / b )
where a = fromIntegral x :: Float
b = fromIntegral y :: Float