8

这个看起来很简单,但我在 Ruby 中计算日志(Base 5)时遇到了麻烦。

显然,标准 base-10 日志可以正常工作:

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

但在我的项目中,我需要使用 Base 5。根据 ruby​​ 文档(http://www.ruby-doc.org/core/classes/Math.html#M001473),我似乎应该能够做到这一点:

Math.log(num,base) → 浮点数

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

它不喜欢哪个。有人知道如何在 ruby​​ on rails 中计算 base-n 中的日志吗?

谢谢!

4

2 回答 2

15

我将检查 Ruby 函数,但不要忘记您的基础知识: 替代文字

在 Ruby 1.9 之前:

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

在 Ruby 1.9 及更高版本中,引入了第二个参数:

> Math::log(234504, 5)
=> 7.682948083154834
于 2011-01-23T22:29:43.343 回答
4

另一个答案当然是正确的,但为了节省时间,Math.log(n, base)在 Ruby >= 1.9 中工作

http://www.ruby-doc.org/core-2.0/Math.html#method-c-log

于 2013-06-19T18:03:12.853 回答