読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

浮動小数点の列挙

Read World Haskell読み始めた。 浮動小数点の列挙は挙動が不思議という話。

Prelude> [1.0 .. 2.01]
[1.0,2.0]
Prelude> [1.0 .. 2.49]
[1.0,2.0]
Prelude> [1.0 .. 2.5]
[1.0,2.0,3.0]

なるほどな。 1.5刻みはどうなるんだろう?

Prelude> [1.0, 1.5 .. 2.5]
[1.0,1.5,2.0,2.5]
Prelude> [1.0, 1.5 .. 2.51]
[1.0,1.5,2.0,2.5]

Prelude> [1.0, 1.5 .. 2.74]
[1.0,1.5,2.0,2.5]
Prelude> [1.0, 1.5 .. 2.75]
[1.0,1.5,2.0,2.5,3.0]

うんうん。 じゃあ0.05刻みにできるかな?

Prelude> [1.00, 1.05 .. 2.95]
[1.0,1.05,1.1,1.1500000000000001,1.2000000000000002,1.2500000000000002,1.3000000000000003,1.3500000000000003,1.4000000000000004,1.4500000000000004,1.5000000000000004,1.5500000000000005,1.6000000000000005,1.6500000000000006,1.7000000000000006,1.7500000000000007,1.8000000000000007,1.8500000000000008,1.9000000000000008,1.9500000000000008,2.000000000000001,2.0500000000000007,2.1000000000000005,2.1500000000000004,2.2,2.25,2.3,2.3499999999999996,2.3999999999999995,2.4499999999999993,2.499999999999999,2.549999999999999,2.5999999999999988,2.6499999999999986,2.6999999999999984,2.7499999999999982,2.799999999999998,2.849999999999998,2.8999999999999977,2.9499999999999975]

ワオ!

広告を非表示にする