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に最も近い整数を返します。2つの整数の間で等距離にxある場合は偶数の整数を返します。x

@dflemstrで指摘されているように、これは浮動小数点演算のIEEE標準に準拠しています。

于 2012-05-24T13:43:23.010 に答える