Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Помогите пожалуйста понять строку |
Автор: Muerto 18.6.2007, 11:55 | ||
double value = номер от одного до ста / 100.0;
Это для звука. Но я не понимаю что именно происходит тут (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0); |
Автор: Samotnik 18.6.2007, 12:03 |
это формула, кот приводиться с float, далее Math.long - это логарифм, далее если value = 0.0, то записывается 0,0001, иначе записывается value, далее эта вся красота делиться на логарифм 10, а потом умножается на 20 |
Автор: kkorsakoff 18.6.2007, 12:04 |
А что именно не понятно? формула такова f(n)=ln(value)/ln(10)*20 Причем проверяется условие, что value не равно нулю. Если оно будет равно нулю, то результатом ln будет бесконечность (за знаком минус), и как следствие исключение. Чтобы такого не было, происходит проверка. Если value==0.0, то оно выставляется в 0.0001. |
Автор: kkorsakoff 18.6.2007, 12:21 |
Прикольно. Возможно и так, но тогда непонятно зачем тогда наворотили проверку. Видимо от чего-то они все-таки спасались![]() |
Автор: fixxer 18.6.2007, 14:23 | ||
Скорее даже изначальная формула f(value)=lg(value)*20 Дело в том, что Math.log10(double) появился только в java 5. |
Автор: Muerto 18.6.2007, 15:04 |
Большое спасибо,я понял... |
Автор: Muerto 18.6.2007, 15:20 | ||||
мммм, чет не пойму,А зачем надо
если это = 1 ??? Добавлено через 3 минуты и 54 секунды написал
выдало 2.302585092994046 значит мы имеем дело с логорифом у каторого внизу "E" тоесть ln а не log ??????? |
Автор: chief39 18.6.2007, 15:31 |
Угу. От нуля ![]() ЗЫ: название темы жжот! ![]() ![]() |
Автор: Metal_Heart 19.6.2007, 09:31 | ||||||||
тебе же сказали, что:
поэтому, используется формула приведения логарифма к произвольному основанию ![]() |