"%"和" /" simbols在Ruby中的区别

时间:2016-12-24 16:58:10

标签: ruby-on-rails ruby

我试图解决FizzBu​​zz游戏。

我需要检查一个数字是否可被3整除。因此,当我们取一个数字并除以3时,我们需要该操作没有REST或0 REST。

给我的解决方案是:

def fizzbuzz(number)

  if number % 3 == 0
    return "Fizz"
  end

他们为什么建议使用"%"符号?为什么不用" /"符号?或者两者都一样?

我该如何检查该部门是否没有REST?

4 个答案:

答案 0 :(得分:5)

除法运算符 / - 除了除法的余数之外,给出除法的商。因此,您无法使用除法运算符(/)确定数字是否完全可分(余数= 0)或不能完全可分(使用非零余数)。

10 / 3
#=> 3 

模运算符 % - 给出除法的余数。如果完全可分,则输出为0,如果不完全可分,则输出为非零值。

10 % 3
#=> 1 

在您的情况下,number % 3 == 0true number可被{3}整除0余数(即number传入方法frizzbuzz是3的倍数,如-12,-3,3,6,9等)

答案 1 :(得分:2)

Ruby有4个分区运算符。

divmod返回除法和余数

  number = 15
  number.divmod(7) # => 2, 1 

modulo别名%仅返回剩余部分

  number = 15
  number % 7 # => 1
  number.modulo(7) # => 1
如果两个操作数都是整数,则

div别名/返回整数除法;如果任一操作数是浮点数,则返回浮点除法。

  number = 15
  number / 7 # => 2
  number.div(7) # => 2
  1.0 * number / 7 # => 2.142857142857143

fdiv始终返回完整精度浮点除法

  number = 15
  number.fdiv(7) # => 2.142857142857143 

答案 2 :(得分:0)

%是模数 - 用左手操作数除左手操作数并返回余数。 \只是分频器。 No Rest意味着x%y == 0。

答案 3 :(得分:0)

让我们举一个例子来更好地理解:

number1 = 12
number2 = 13

让我们看看number1和number2是否可以通过4 ok进行设计?

number1 / 4 = 3 and the rest = 0
number2 / 4 = 3 and the rest = 1

所以“/”操作让我们知道了拆分操作的结果 并且“%”操作让我们知道其余的拆分操作

因此,如果我们采用我们的例子,则数字1可以由3来设计,因为

number1 % 3 = 0 ( the rest )