
I think the function you're looking for is:
myRound n places = round (n / fromIntegral factor) * factor
where factor = 10 ^ (places - 1)
In this case, 10 ^ (places - 1) has integral type (either Int or
Integer). I need it to be a fractional type to divide n by it, so I
use fromIntegral to convert it.
/g
On 2/12/06, Chatzianastassiou Achilleas
Thanks for the anwser Sebastian,
this seems to work, however I am trying to implement something like Main> myfunction 123.456 2 120.0
From: Sebastian Sylvan
Reply-To: sylvan@student.chalmers.se To: Chatzianastassiou Achilleas CC: haskell-cafe@haskell.org Subject: Re: [Haskell-cafe] round function Date: Sun, 12 Feb 2006 22:23:17 +0100 On 2/12/06, Chatzianastassiou Achilleas
wrote: Hi all,
I am trying to implement a function that finds the significant figure of a number to a specified point i.e. 2.55555 3 = 2.556. I have implemented something like:
sig :: (RealFrac a, Integral b) => a -> Int -> a sig x y = round y
However this doesn't work. Moreover at the Prelude when i type round 2.3333 2 i get an error. Any suggestions?
Something like:
myround n s = fromIntegral (round (n * factor)) / factor where factor = fromIntegral (10^s)
Basically scaling it to bring the specified number of digits to the left of the decimal point, then rounding, then scaling back.
/S
-- Sebastian Sylvan +46(0)736-818655 UIN: 44640862
_________________________________________________________________ FREE pop-up blocking with the new MSN Toolbar – get it now! http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- We have lingered in the chambers of the sea By sea-girls wreathed with seaweed red and brown Till human voices wake us, and we drown.