Подтвердить что ты не робот

От округленного до ближайшего целого

Есть ли официальная спецификация функции round в Haskell? В 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?

4b9b3361

Ответ 1

Это в спецификации. Вы можете увидеть это в разделе 6.4.6 отчет Haskell:

round x возвращает ближайшее целое число x, четное целое, если x равно эквидистант между двумя целыми числами.

Как указано @dflemstr, это соответствует IEEE Standard for Floating Арифметика -Point.