Haskell:将Float转换为Int(平均值)

时间:2015-10-19 11:27:22

标签: haskell int

我有一个必须返回Int的函数,但是我需要使用本地定义来查找三个参数的平均值;这样:

avg = (a + b + c) / 3

然而,这当然会返回一个浮点数,如何将结果转换为int(或更具体地将其向上或向下舍入)?

1 个答案:

答案 0 :(得分:2)

正如我评论的那样,您可以像这样使用round, ceiling or floor

avg :: Integral a => a -> a -> a -> Int
avg a b c = round $ fromIntegral (a+b+c) / 3

或者您可以使用div代替(将截断为负无穷大......):

avg' :: Integral a => a -> a -> a -> a
avg' a b c = (a+b+c) `div` 3

如果你想要不同的输入类型,你可能还需要使用其他一些转换,但我无法从你的问题中说出来。