我需要一个舍入到最接近的数字的函数,而不是舍入到偶数的默认值。我写了一个,但问题是我是Haskell的新手,我认为它有一些语法错误。有人可以帮帮我吗?谢谢。 这是我到目前为止编写的代码:
rounding a
| (round a) - a > (-0.5) = round a
| otherwise = round a + 1
答案 0 :(得分:3)
为什么不
rounding a = floor (a + 0.5)
答案 1 :(得分:2)
您正在混合从a
中减去round a
的类型(一个类型取决于rounding
参数的类型,而另一个类型始终为Integral
)。 round
需要RealFrac
,因此您应该从参数中获得最少的要求。与往常一样,我还建议将类型签名添加到rounding
。以下显示了最简单的修复方式:
rounding a
| (fromIntegral (round a)) - a > (-0.5) = round a
| otherwise = round a + 1