Ruby中Math Power(**)的反转是什么?

问题描述 投票:22回答:4

我想知道如何在Ruby中获得相反的功效?

2 ** 4 # => 16

然后我想得到它的反转,我不确定使用哪个运算符

16 ?? 2 # => 4
ruby math
4个回答
63
投票

取幂的倒数是对数。如果ab = c,那么logac = b

你可以在Math模块中找到对数函数,特别是log()用于base-e,log10()用于base-10。

要获得不同基数(例如n)的对数,请使用公式logNa = logxa/logxN,其中x是e或10等值。

对于您的具体情况:

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

你是否认为这个解释很好,因为它扩展了你的知识,或者因为你讨厌高中数学而不好,完全取决于你:-)


6
投票
Math.log(16) / Math.log(2)

0
投票

从Ruby 1.9.1开始,获得对数的更简洁方法是使用Math.log2

[1] pry(main)> Math.log2(2**4)
=> 4.0
© www.soinside.com 2019 - 2024. All rights reserved.