Modulo operation in Ruby

Today I was stumped by a very simple yet awesome problem by my friend Sandip

What is the answer of  :  7 % -2 
and to the surprise ruby irb printed it as : -1 

After some research I what I found about this and why here is explanation and links

From Ruby Programming Language, O,really 

Division, Modulo, and Negative Numbers

When one (but not both) of the operands is negative, Ruby performs the integer division and
modulo operations differently than languages like C, C++, and Java do (but the same as the
languages Python and Tcl). Consider the quotient -7/3. The floating-point result is –2.33. The
result of integer division must be an integer, however, so this number must be rounded. Ruby
rounds toward negative infinity and returns –3. C and related languages round toward zero
instead and return –2. (This is just one way to characterize the results; no floating-point division
is actually done, of course.)

An important corollary of Ruby's definition of integer division is that, in Ruby, -a/b equals
a/-b but may not equal -(a/b).
Ruby's definition of the modulo operation also differs from that of C and Java. In Ruby, –7%3 is
In C and Java, the result is -1 instead. The magnitude of the result differs, of course, because
the value of the quotient differs. But the sign of the result differs, too. In Ruby, the sign of the
result is always the same as the sign of the second operand. In C and Java, the sign of the result is
always the same as the sign of the first operand. (Ruby also provides a remainder method that
behaves, in sign and magnitude, like the C modulo operator.)

More Links I suggest to must see for more better understanding


  1. Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a Java developer learn from Java Training in Chennai. or learn thru Java Online Training in India . Nowadays Java has tons of job opportunities on various vertical industry.

    or Javascript Training in Chennai. Nowadays JavaScript has tons of job opportunities on various vertical industry.

  2. thank you so much for sharing this - so helpful!

  3. I found your blog while searching for the updates, I am happy to be here. Very useful content and also easily understandable providing.
    Believe me I did wrote an post about tutorials for beginners with reference of your blog. 
    Core Java interview questions and answers
    Java training in Tambaram
    Java training in Velachery
    Java training in Omr
    Oracle training in Chennai


Post a Comment

Popular posts from this blog

Difference between rake db:migrate db:reset and db:schema:load

Install Multimedia codec (offline) without internet connection in Ubuntu

rails 3.2 with jruby and mysql with rvm in ubuntu