Greetings,

I got a book on Ruby and I am trying to learn it piece by piece.  I was
a Perl programmer for a while so the syntax of Ruby is not too hard for
me.  What I don't understand is the following and I thank you in advance
for your help and input.

I have a variable named "num" that is set to "9."  I'm using the
num.eql?() method to test whether or not num.eql?(9) and it gives me
"true" in IRB - no surprise there.  The next one below also gives me
"true" since 18/2 is 9.  I read in the book that if you want to force
the result of an experssion to be a float, make one or both operands a
floating number. So we have 18/2.0. But the result is "false." How come?
How come everytime I change either the number to float I get a false
even though the expression is correct?  At first I thought I'm not
dividing numbers - rather maybe I'm dividing the value of the chars
rather than their math value.  But that's not true as "18.to_i/2.to_i,"
just like "18/2," gives us "true."

I'm all ears to hear the logic behind such behavior

Thanks again

irb(main):058:0> num.eql?(9)
=> true
irb(main):059:0> num.eql?(18/2)
=> true
irb(main):060:0> num.eql?(18/2.0)
=> false
irb(main):061:0> num.eql?(18.0/2)
=> false
irb(main):062:0> num.eql?(18.0/2.0)
=> false
irb(main):063:0> num.eql?(18/2)
=> true
irb(main):064:0> num.eql?(18.0/2.to_f)
=> false
irb(main):065:0> num.eql?(18.to_f/2.to_f)
=> false
irb(main):066:0> num.eql?(18.to_f/2.to_i)
=> false
irb(main):067:0> num.eql?(18.to_i/2.to_i)
=> true
irb(main):068:0>
-- 
Posted via http://www.ruby-forum.com/.