使用 C# 从 16 位音频样本值计算 dBFS 值时输出不精确

本文关键字:计算 dBFS 输出 不精确 样本 音频 使用 | 更新日期: 2023-09-27 17:56:49

我正在使用 c# 从 16 位波形文件样本(-32768 到 +32767)计算 dBFS 值,如下所示:

int sampleValue = -32700;
double dBFSvalue = 20 * Math.Log10(Math.Abs(sampleValue) / 32768);

但是当我尝试打印 dBFS 值时,sampleValue 32768 的结果是"0",但 sampleValue 的任何其他值都会导致"-无穷大"。

MessageBox.Show($"Result: {dBFSvalue}dBFS");

这与双精度类型的显示有关吗?我应该如何转换数字以"-60.5 dBFS"的形式正确显示?

谢谢。

使用 C# 从 16 位音频样本值计算 dBFS 值时输出不精确

将第二行代码替换为

double dBFSvalue = 20 * Math.Log10(Math.Abs(sampleValue) / 32768.0);

您需要.0将其计算为浮点数。否则,它计算为整数,括号中的项计算为 0。