在Ruby中计算Base-n对数

时间:2011-01-23 22:27:43

标签: ruby math logarithm

这个看起来很简单,但我在Ruby中计算log(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)→float

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

它不喜欢。任何人都知道如何在轨道上的ruby中计算base-n中的日志?

谢谢!

2 个答案:

答案 0 :(得分:13)

我会检查Ruby功能,但不要忘记你的基础知识: alt text

在Ruby 1.9之前:

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

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

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

答案 1 :(得分:4)

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

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