Преобразование бД в линейную без операций с плавающей запятой

#c

#c

Вопрос:

Как преобразовать бД в линейную, используя только целые числа? Допустимы приблизительные решения.

Уточнение: Преобразование dB в линейный получается по формуле P = 10*log10(P_dB) Обратное получается по формуле: P_dB = 10^(P/10)

При программировании на C для этого требуются операции с плавающей запятой.

Диапазон P_dB ограничен и составляет от -50 до 50, тип-целое число.

Существует ли приемлемый метод получения этих преобразований только с использованием целочисленных операций?

Комментарии:

1. дб, как в децибелах ? вы пробовали/исследовали что-нибудь ?

2. Пожалуйста, перечислите решения, которые вы уже исследовали и отвергли, чтобы нам не пришлось возвращаться к тому, что вы уже рассмотрели.

3. Покажите свой расчет с плавающей запятой. Также опишите полный диапазон входных и выходных значений, с которыми вы работаете.

4. Не могли бы вы подробнее рассказать, с чем конкретно у вас возникли проблемы? Вы не уверены, как преобразовать измерение в дБ в представленную величину? Или вы знаете, какое преобразование вы хотите выполнить и как, но не уверены, как это сделать без использования операций с плавающей запятой? Или что-то совсем другое?

5. Кроме того, вы используете C или C ? Это два разных языка с различными доступными математическими утилитами.

Ответ №1:

Плюс становится умножением, минус делением. пример:

 10dB ~ 10 3db ~ 2   
 57dB = 10   10   10   10   10   10 - 3 10*10*10*10*10*10/2 = 500000;  

Вам не нужны никакие поплавки.

Комментарии:

1. Разве это 1.5 не поплавок в последнем примере?

2. Ненужный

3. @JeremyFriesner Действительно