Ruby Modulo Division

时间:2012-03-21 16:02:55

标签: ruby modulo

所以我创建了一个程序,在Ruby中使用模块进行模数除法:

module Moddiv
    def Moddiv.testfor(op1, op2)
        return op1 % op2
    end
end

程序:

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

当我使用两个数字运行它时,比如70和6,我得到70作为输出!为什么会这样?

3 个答案:

答案 0 :(得分:10)

这是因为firstnumsecondnum字符串 "70""6"String#%已定义 - 它是格式化输出运算符。

由于"70"不是格式字符串,因此将其视为文字;因此"70" % "6"根据模板"70"打印“6”格式,只有"70"

您需要使用firstnum = $_.to_i等转换输入

答案 1 :(得分:2)

Modulo似乎在使用字符串时遇到问题,例如,在irb:

"70" % "6" => "70"

尝试制作你的退货声明:

return op1.to_i % op2.to_i

答案 2 :(得分:0)

您将用户输入作为字符串而不是整数来抓取。

"70" % "6"
# => "70"

70 % 6
# => 4

对你的参数使用.to_i,你应该好好去。