Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста понять строку 
V
    Опции темы
Muerto
Дата 18.6.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



double value = номер от одного до ста / 100.0;
Код

 dB = (float) (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);


Это для звука.

Но я не понимаю что именно происходит тут (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);


--------------------
user posted image
PM MAIL   Вверх
Samotnik
Дата 18.6.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



это формула, кот приводиться с float, далее 
Math.long - это логарифм,  далее
если value = 0.0, то записывается 0,0001,  иначе записывается value,  далее
эта вся красота делиться на логарифм 10, а потом умножается на 20


PM MAIL   Вверх
kkorsakoff
Дата 18.6.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



А что именно не понятно?

формула такова

f(n)=ln(value)/ln(10)*20

Причем проверяется условие, что value не равно нулю. Если оно будет равно нулю, то результатом ln будет бесконечность (за знаком минус), и как следствие исключение.

Чтобы такого не было, происходит проверка. Если value==0.0, то оно выставляется в 0.0001.
PM MAIL WWW ICQ   Вверх
goodday1941
Дата 18.6.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



Цитата(kkorsakoff @  18.6.2007,  12:04 Найти цитируемый пост)
Если оно будет равно нулю, то результатом ln будет бесконечность (за знаком минус), и как следствие исключение.

помоему эксепш не выбрасываеться... недавно пришлось поработать слегка с библиотекой Math дык он мне в случае бесконечности в стэктрейс Infinity писал  smile 


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
kkorsakoff
Дата 18.6.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Прикольно. Возможно и так, но тогда непонятно зачем тогда наворотили проверку. Видимо от чего-то они все-таки спасалисьsmile
PM MAIL WWW ICQ   Вверх
fixxer
Дата 18.6.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(kkorsakoff @ 18.6.2007,  12:04)
формула такова

f(n)=ln(value)/ln(10)*20


Скорее даже изначальная формула

f(value)=lg(value)*20

Дело в том, что Math.log10(double) появился только в java 5. 


--------------------
user posted image
PM MAIL ICQ   Вверх
Muerto
Дата 18.6.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Большое спасибо,я понял...



--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 18.6.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



мммм, чет не пойму,А зачем надо 
Код

 /Math.log(10.0)
 
если это  = 1 ???

Добавлено через 3 минуты и 54 секунды
написал
Код

System.out.println(Math.log(10.0));

выдало
2.302585092994046
значит мы имеем дело с логорифом у каторого внизу "E"
тоесть ln а не log ???????


--------------------
user posted image
PM MAIL   Вверх
chief39
Дата 18.6.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(goodday1941 @  18.6.2007,  12:12 Найти цитируемый пост)
дык он мне в случае бесконечности в стэктрейс Infinity писал

Угу.


Цитата(kkorsakoff @  18.6.2007,  12:21 Найти цитируемый пост)
Видимо от чего-то они все-таки спасались

От нуля smile


ЗЫ: название темы жжот!  smile  Третье слово прочитал чуть иначе и укатился под стол smile


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Metal_Heart
Дата 19.6.2007, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(Muerto @ 18.6.2007,  15:20)
мммм, чет не пойму,А зачем надо 
Код

 /Math.log(10.0)
 
если это  = 1 ???

Добавлено @ 15:24
написал
Код

System.out.println(Math.log(10.0));

выдало
2.302585092994046
значит мы имеем дело с логорифом у каторого внизу "E"
тоесть ln а не log ???????

тебе же сказали, что:
Цитата

Дело в том, что Math.log10(double) появился только в java 5. 


поэтому, используется формула приведения логарифма к произвольному основанию  smile 


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1288 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.