Chr*_*lor 21 floating-point haskell
roundHaskell中有关于该函数的官方规范吗?在GHCi版本7.0.3中,我看到以下行为:
ghci> round (0.5 :: Double)
0
ghci> round (1.5 :: Double)
2
Run Code Online (Sandbox Code Playgroud)
由于0.5和1.5都可以完全表示为浮点数,我希望看到与Python中相同的行为:
>>> round(0.5)
1.0
>>> round(1.5)
2.0
Run Code Online (Sandbox Code Playgroud)
是否存在差异的理由,还是GHCi的怪癖?
evi*_*bag 23
它在规范中.您可以在Haskell报告的 6.4.6节中看到它:
round x返回最接近的整数x,如果x两个整数之间是等距的,则返回偶数.
正如@dflemstr所指出的,这符合IEEE浮点运算标准.