我试图解决FizzBuzz游戏。
我需要检查一个数字是否可被3整除。因此,当我们取一个数字并除以3时,我们需要该操作没有REST或0 REST。
给我的解决方案是:
def fizzbuzz(number)
if number % 3 == 0
return "Fizz"
end
他们为什么建议使用"%"符号?为什么不用" /"符号?或者两者都一样?
我该如何检查该部门是否没有REST?
答案 0 :(得分:5)
除法运算符 /
- 除了除法的余数之外,给出除法的商。因此,您无法使用除法运算符(/
)确定数字是否完全可分(余数= 0)或不能完全可分(使用非零余数)。
10 / 3
#=> 3
模运算符 %
- 给出除法的余数。如果完全可分,则输出为0
,如果不完全可分,则输出为非零值。
10 % 3
#=> 1
在您的情况下,number % 3 == 0
仅true
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 )