to_a
は、この場合、さまざまな整数の動作をします。 小数点以下15桁まで、include?
はfalse
を返しますが、16小数点以下の配列に到達すると小数点は配列の一部と見なされます。なぜ以下はRubyで動作するのですか?
なぜですか?
2.2.1 :020 > (1..9).to_a.include?(8.999999999999999)
=> false
2.2.1 :021 > (1..9).to_a.include?(8.9999999999999999)
=> true
2.2.1 :022 >
そして、なぜ範囲のみこれは
2.2.1 :001 > (1..9).include?(8.9)
=> true
'(1..9)?(8.9)'は '1 <= 8.9 && 8.9 <= 9'と同じです。これがなぜ真実を返すのかは明らかです。しかし '(1..9).to_a'は配列' [1,2,3,4,5,6,7,8,9] 'を返します。これはなぜ '8.9999999999999999 == 9 'が' true'に評価されるのか、 '8.999999999999999 == 9'が' false'になるのかという疑問につながりますか?浮動小数点数の不定詞... – spickermann
さらに別の*** "数字は言語xで動作しません" ***質問。 xd – ndn
@spickermann、それを答えとして書くべきです。 – ndn