Ruby ** 双星运算符

VKa*_*atz -3 ruby

** 在 Ruby 中是什么意思?

例子

下面提到的代码片段并得到:

1 ** 5 # => 1
43 ** 67 # => 27694053307656599023809257877241042019569010395053468294153499816223586030238186389799480520831161107426185107
Run Code Online (Sandbox Code Playgroud)

问题

  • 什么是 ruby​​ 中的 ** 运算符?
  • 为什么第二次查询时我得到的数字太大?

Dre*_*nmi 7

在 Ruby 中,**是指数运算符。即,通过这样做a**b,您提高a了 的幂b。按照惯例,操作数之间没有空格。

例子:

3**2
#=> 9

2**3
#=> 8
Run Code Online (Sandbox Code Playgroud)

请注意,指数运算符的优先级高于乘法和除法,就像在数学中一样:

2 * 2**3 # (2 * 8)
#=> 16

18 / 3**2 # (18 / 9)
#=> 2
Run Code Online (Sandbox Code Playgroud)

如果您链接运算符,则优先级将从右到左解析:

2**2**3 == 2**(2**3) # (2^8)
#=> true
Run Code Online (Sandbox Code Playgroud)


Sha*_*riq 4

** 是指数运算符 - 它执行指数(幂)计算。让我通过这个简单的例子来解释一下

2 ** 2 => 2 * 2 => 4

2 ** 3 => 2 * 2 * 2 => 8

2 ** 4 => 2 * 2 * 2 * 2 => 16

2 ** 5 => 2 * 2 * 2 * 2 * 2 => 32

所以 43 ** 67 => 43 * 43 * 43 * 43 ...................................... ……………………

所以它会产生这么大的数字。

要获取有关操作符的更多详细信息,请访问http://www.tutorialspoint.com/ruby/ruby_operators.htm