Haskell:将Float转换为Int(平均平均值)
Haskell: Converting Float to Int (mean average)
我有一个必须 return Int 的函数,但是我需要使用局部定义来计算三个参数的平均值;这样:
avg = (a + b + c) / 3
然而,这当然 return 是一个浮点数,我如何将结果转换为 int(或者更具体地说,向上或向下舍入)?
正如我评论的那样,您可以像这样使用 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
如果您想要不同的输入类型,您可能还需要使用其他一些转换,但我无法从您的问题中判断出来。
我有一个必须 return Int 的函数,但是我需要使用局部定义来计算三个参数的平均值;这样:
avg = (a + b + c) / 3
然而,这当然 return 是一个浮点数,我如何将结果转换为 int(或者更具体地说,向上或向下舍入)?
正如我评论的那样,您可以像这样使用 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
如果您想要不同的输入类型,您可能还需要使用其他一些转换,但我无法从您的问题中判断出来。