开发者

What's the reverse of Math Power (**) in Ruby?

I was wondering how to get the inverse of power in Ruby?

2 ** 4 # => 16

and then I would like to get the inverse of it, and I'm not su开发者_运维百科re which operator to use

16 ?? 2 # => 4


The inverse of exponentiation is the logarithm. If ab = c, then logac = b.

You can find logarithm functions in the Math module, specifically log() for base-e and log10() for base-10.

To get a logarithm to a different base (say n), use the formula logNa = logxa/logxN, where x is a value such as e or 10.

For your specific case:

log216
= loge16/loge2
= Math.log(16) / Math.log(2)
= 4

Whether you consider the explanation good because it expands your knowledge, or bad because you hated high school math, is entirely up to you :-)


Math.log(16) / Math.log(2)


A cleaner way to obtain the logarithm, starting with Ruby 1.9.1, would be to use Math.log2:

[1] pry(main)> Math.log2(2**4)
=> 4.0
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜