Haskell Converting Int to Float

floating-point, haskell, int, integral

Solution

Look at the type of `div`:

div :: Integral a => a -> a -> a

You cannot transform your input to a `Float` and then use `div`.

Use `(/)` instead:

(/) :: Fractional a => a -> a -> a

The following code works:

percent :: Int -> Int -> Float
percent x y =   100 * ( a / b )
  where a = fromIntegral x :: Float
        b = fromIntegral y :: Float

Problem

I'm having some problem with one of the functions which I'm new at, it's the fromIntegral function. Basically I need to take in two Int arguments and return the percentage of the numbers but when I run my code, it keeps giving me this error: Code: ``` percent :: Int -> Int -> Float percent x y = 100 * ( a `div` b ) where a = fromIntegral x :: Float b = fromIntegral y :: Float ``` Error: ``` 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 ``` I read the '98 Haskell prelude and it says there is such a function called fromInt but it never worked so I had to go with this but it's still not working. Help!

Original source