| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||||||||
тебе же сказали, что:
поэтому, используется формула приведения логарифма к произвольному основанию |