23

roundHaskell中的函数有官方规范吗?在 GHCi 7.0.3 版中,我看到以下行为:

ghci> round (0.5 :: Double)
0
ghci> round (1.5 :: Double)
2

由于 0.5 和 1.5 都可以精确地表示为浮点数,我希望看到与 Python 中相同的行为:

>>> round(0.5)
1.0
>>> round(1.5)
2.0

这种差异有什么理由吗,还是 GHCi 的怪癖?

4

1 回答 1

25

它在规范中。您可以在 Haskell 报告的第 6.4.6 节中看到它:

round x返回最接近的整数x,如果x两个整数之间等距,则返回偶数。

正如@dflemstr所指出的,这符合IEEE Standard for Floating-Point Arithmetic

于 2012-05-24T13:43:23.010 回答