Что обратного в Math Power (**) в Ruby? - PullRequest
22 голосов
/ 20 июля 2010

Мне было интересно, как получить инверсию мощности в Ruby?

2 ** 4 # => 16

, а затем я хотел бы получить ее инверсию, и я не уверен, какой оператор использовать

16 ?? 2 # => 4

Ответы [ 3 ]

63 голосов
/ 20 июля 2010

Обратной степенью возведения в степень является логарифм.Если a<sup>b</sup> = c, то log<sub>a</sub>c = b.

Вы можете найти функции логарифма в модуле Math, в частности log() для базовых - e и log10() для базы-10.

Чтобы получить логарифм для другой базы (скажем, n), используйте формулу log<sub>N</sub>a = <sup>log<sub>x</sub>a</sup>/<sub>log<sub>x</sub>N</sub>, где x - это значение, такое как e или 10.

Для вашего конкретного чехла:

log<sub>2</sub>16<br> = <sup>log<sub>e</sub>16</sup>/<sub>log<sub>e</sub>2</sub><br> = Math.log(16) / Math.log(2)<br> = 4

Ли выСчитайте объяснение хорошим, потому что оно расширяет ваши знания, или плохим, потому что вы ненавидели математику в старших классах, полностью зависит от вас: -)

6 голосов
/ 20 июля 2010
Math.log(16) / Math.log(2)
0 голосов
/ 18 февраля 2015

Более чистый способ получения логарифма, начиная с Ruby 1.9.1, заключается в использовании Math.log2:

[1] pry(main)> Math.log2(2**4)
=> 4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...