-1

重複の可能性:
Haskell:式[0、0.1..1]の予期しない出力

Haskellでは、次の結果の理由を誰かが知っていますか?

Prelude Data.List> map (\x -> x - 0.1) [0.2,0.3..0.9]

[0.1,0.19999999999999998,0.29999999999999993,0.3999999999999999,0.4999999999999999,0.5999999999999998,0.6999999999999996,0.7999999999999995]

それ以外の

[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8]
4

1 に答える 1

11

デフォルトでは、Double(不正確ですが効率的なデータ型)が分数データに選択されます。代わりに使用するように注釈を付けるとRational、正確な答えを得ることができます。

ghci> map (\x -> x - 0.1) [0.2,0.3..0.9] :: [Rational]
[1 % 10,1 % 5,3 % 10,2 % 5,1 % 2,3 % 5,7 % 10,4 % 5]

パーセント記号は正確な分数を示すために使用されるため、1 % 1010分の1を意味します。

于 2013-02-04T05:03:47.143 に答える