Ruby Modulo Division
16,049
Solution 1
It's because firstnum
and secondnum
are the strings "70"
and "6"
. And String#%
is defined - it's the formatted-output operator.
Since "70"
is not a format string, it's treated as a literal; so "70" % "6"
prints "6" formatted according to the template "70"
, which is just "70"
.
You need to convert your input with firstnum = $_.to_i
etc.
Solution 2
Modulo seems to have trouble with strings, for example, in irb:
"70" % "6" => "70"
try making your return statement:
return op1.to_i % op2.to_i
Comments
-
Billjk almost 2 years
So I made a program to do modulo division in Ruby, using a module:
module Moddiv def Moddiv.testfor(op1, op2) return op1 % op2 end end
Program:
require 'mdivmod' print("Enter the first number: ") gets chomp firstnum = $_ print("Enter the second number: ") gets chomp puts secondnum = $_ puts "The remainder of 70/6 is " + Moddiv.testfor(firstnum,secondnum).to_s
When I run it with two numbers, say 70 and 6, I get 70 as the output! Why is this happening?
-
coder_tim about 12 years@Chowlett has a better explanation (and beat me by 21 seconds!)