2016-07-14 6 views
0

I는 다음과 같이 C#을 사용하는 16 비트 웨이브 파일 샘플로부터 dBFS의 값 (+32767 -32768)을 계산하고를 이용하여 16 비트의 오디오 샘플 값으로부터 dBFS의 값을 산출하는부정확 출력 할 때 C 번호

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"형식으로 올바르게 표시하려면 어떻게 변환해야합니까?

감사합니다.

+0

https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx –

답변

3

당신은 부동 소수점 숫자로 계산 .0 필요

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

에 의해 코드의 두 번째 라인을 교체합니다. 그렇지 않으면 정수로 계산되며 대괄호 안의 용어는 0으로 평가됩니다.

+0

감사합니다! 그거였다. 나는 그 실수를하기 전에 잊어 버린 것 같다. –