Если вы считаете, что это объяснение хорошо, потому что оно расширяет ваши знания или плохо, потому что вы ненавидели математику в средней школе, полностью зависит от вас: -)
Ответ 2
Math.log(16) / Math.log(2)
Ответ 3
Или, наоборот, сделайте это так:
>> 16**(1.0/2)
=> 4.0
Ответ 4
На самом деле:
Маро фактически прав, но
Комментарий Maro не поддерживает ответ Джереми Мюррея-Уэйкфилда, который не относится к вопросу OP.
Маро, следовательно, "прав" самостоятельно, но не как поддержка ответа Джереми Мюррея-Уэйкфилда, который сам по себе не так "неправилен", как не правильный ответ на вопросы ОП.
Надеюсь, что окончательный!
Ответ 5
Более чистый способ получить логарифм, начиная с Ruby 1.9.1, состоял бы в использовании Math.log2: