知人から Hash の key に小数を使うとうまくいかないと相談を受けました。 とりあえず「文字列に変換して key とすれば」と答えておきましたが、 原因は何でしょうか? 以下にその質問メールを引用します。 > @h = Hash.new > @h[0.01] = 2.576 > @h[0.02] = 2.326 > @h[0.03] = 2.170 > @h[0.04] = 2.054 > @h[0.05] = 1.960 > @h[0.06] = 1.881 > @h[0.07] = 1.812 > @h[0.08] = 1.751 > @h[0.09] = 1.695 > > @keys = @h.keys > print @keys, "\n" > > for i in @keys > print @h[i], " " > end > print "\n" > > print @h[0.01], " ", @h[0.02], " ", @h[0.03], " ", @h[0.04], " ", @h[0.05], " ", @h[0.06], " ", @h[0.07], " ", @h[0.08], " ", @h[0.09], "\n" > > を実行すると, > > % ruby test.rb > 0.010.080.090.060.020.030.04 > 2.576 1.751 1.695 1.812 2.326 1.96 2.054 > 2.576 2.326 1.96 2.054 1.96 1.812 1.812 1.751 1.695 となる。 0.03 と 0.05, 0.06 と 0.07 (だけ)が同一視されているようですね。 確認に使用したバージョンは 1.0-970909 (sparc-solaris2.5.1) です。