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
精彩评论