24 votes

Quelle est l'inverse de la puissance mathématique (**) en Ruby ?

Je me demandais comment obtenir l'inverse d'une puissance en Ruby ?

2 ** 4 # => 16

et j'aimerais ensuite obtenir l'inverse de cette valeur, mais je ne suis pas sûr de l'opérateur à utiliser

16 ?? 2 # => 4

66voto

paxdiablo Points 341644

L'inverse de l'exponentiation est le logarithme. Si le logarithme ab = c alors logac = b .

Vous trouverez les fonctions de logarithme dans la rubrique Math module, en particulier log() pour base- e y log10() pour la base 10.

Pour passer d'un logarithme à un différents base (dire n ), utiliser la formule logNa = logxa/logxN donde x est une valeur telle que e ou 10.

Pour votre spécifique cas :

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

Que vous considériez l'explication comme bonne parce qu'elle élargit vos connaissances, ou comme mauvaise parce que vous détestiez les mathématiques au lycée, cela ne dépend que de vous :-)

6voto

Peter Points 38320
Math.log(16) / Math.log(2)

4voto

Vous pouvez également procéder de la manière suivante :

>> 16**(1.0/2)
=> 4.0

1voto

ynkr Points 2493

Une façon plus propre d'obtenir le logarithme, à partir de Ruby 1.9.1, serait d'utiliser Math.log2 :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X