0.1を10回足した総和は1.0と等しいか?

ruby gold対策。
そういえば試験で、こんなのが出ました。
0.1を10回足した総和は1.0と等しいか?

>> sum=0;10.times.each{ |x| sum+=0.1 }
=> 10
>> sum == 1.0

答えはfalse(等しくない)なんですが、

>> sum == 1.0
=> false
>> sum
=> 0.9999999999999999

これは浮動小数点の計算の話でrubyあんまり関係ないなぁと思いながら解いていました。

RubyのDateTimeの差分

合格済みですが、メモしておきます。
gold対策(模擬試験16)。
 
DateTimeの演算結果のclassを問う問題です。

require 'Date'
d1 = DateTime.new
d2 = DateTime.new
d3 = d2 - d1 # => (0/1)
d3.class # => Rational

なんとRationalです。
 
分かりやすいようにDateTime#nowでやると下記のようになります。

d1 = DateTime.now
d2 = DateTime.now
d3 = d2 - d1 # => (7/43200000000)
d3.class # => Rational

Dateも同様です。

d1 = Date.new
d2 = Date.new
d3 = d2 - d1 # => (0/1)
d3.class # => Rational

ついでに、Timeでやると

t1 = Time.now
t2 = Time.now
t3 = t2 - t1 # => 4.0e-06
t3.class # => Float

これは、予想通りFloatです。
というかDateTime/Dateは完全に誤解していました。
どうして違うのでしょうか?

Rubyの技術者認定試験(Gold)に合格しました

先週落ちた のですが、 なんとかリベンジできました。
 
本当になんとか合格でした。76/100 というギリギリ。
3、4問怪しい問題があったのですが、それでも合格してるだろうと踏んで完了ボタンを押したら
ギリギリでびっくりしました。
 
ちなみに先週1週間の対策は公式だけです。

Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)

Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)


 
 
あと、間違えたところ知りたいなぁ。
そもそもどれぐらいの人が受験して、どれぐらいの人が合格しているのか知りたい。