0

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

int sampleValue = -32700;

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

但是当我尝试打印 dBFS 值时,32768 的 sampleValue 会导致“0”,但任何其他 sampleValue 值都会导致“-infinity”。

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

这与 Double 类型的显示有关吗?我应该如何转换数字才能以“-60.5 dBFS”的形式正确显示?

谢谢。

4

1 回答 1

3

将您的第二行代码替换为

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

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

于 2016-07-14T07:43:21.513 回答