Расчет Base-n логарифма в рубине - PullRequest
7 голосов
/ 24 января 2011

Это кажется простым, но у меня проблемы с вычислением лога (база 5) в Ruby.

Очевидно, что стандартный журнал base-10 работает нормально:

>> value = Math::log(234504)
=> 12.3652279242923

Но в моем проекте мне нужно использовать Base 5. Согласно ruby ​​docs (http://www.ruby -doc.org /core / classes / Math.html # M001473) кажется, что я должен быть в состоянии сделать это:

Math.log (num, base) → float

>> value = Math::log(234504, 5)
ArgumentError: wrong number of arguments (2 for 1)
    from (irb):203:in `log'
    from (irb):203
    from :0

Что это не нравится.Кто-нибудь знает, как рассчитать логи в base-n в ruby ​​на рельсах?

Спасибо!

Ответы [ 2 ]

13 голосов
/ 24 января 2011

Я проверю функцию Ruby, но не забуду ваши основы: alt text

До Ruby 1.9:

> Math::log(234504) / Math::log(5)
=> 7.682948083154834

В Ruby 1.9 и позже был введен второй аргумент:

> Math::log(234504, 5)
=> 7.682948083154834
4 голосов
/ 19 июня 2013

Другой ответ, конечно, правильный, но в интересах экономии времени Math.log(n, base) работает в Ruby> = 1,9

* ** +1004 1005 * -doc.org / ядро-2.0 / Math.html # способ-с-журнал

...