[Haskell-cafe] Problem with percentage function?

Chapman, Anthony Sergio a.s.chapman.10 at aberdeen.ac.uk
Sun Apr 20 21:12:29 UTC 2014


Good evening everyone. 

I've made a percentage function for my application (with help from the internet) which is as follows.

-- Turns a number into a percentage 
toPerc :: Double -> Double
toPerc x = 100*(myRound x 4)
-- Rounds a number to s decimal points 
myRound n s = fromIntegral (round (n * factor)) / factor
    where factor = fromIntegral (10^s)

I would it to round to 2 decimal places no matter what the size of the input is

ei toPerc 0.22222222222222  --- = 22.22
    toPerc 0.22342222222222  --- = 22.34 

The problem is that what I actually get is 22.220000000000002

If anyone has any suggestions on how to solve this problem or know of a different/better way to convert to percentage please let me know. 

Thanks 


More information about the Haskell-Cafe mailing list