我正在使用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类型的显示有关吗? 我该如何转换数字以#34; -60.5 dBFS"?
的形式正确显示它?感谢。
答案 0 :(得分:3)
用
替换你的第二行代码double dBFSvalue = 20 * Math.Log10(Math.Abs(sampleValue) / 32768.0);
您需要.0
将其计算为浮点数。否则,它将计算为整数,括号中的术语将计算为0。