我正在使用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”的形式正确显示?
谢谢。
最佳答案
将第二行代码替换为
double dBFSvalue = 20 * Math.Log10(Math.Abs(sampleValue) / 32768.0);
您需要
.0
才能将其计算为浮点数。否则,它将被计算为整数,并且括号中的项将被评估为0。