[英]Can't figure out this formula in c#
對不起,我是編碼的新手,在嘗試一切之后我無法弄清楚這一點! 我有6個屏蔽文本框,用戶輸入分貝值,應該將它們保存到列表中,將每個輸入到公式中並輸出求和的分貝值,但它只是將變量添加為6,這是計數列表而不是實際值。 當我嘗試一個foreach循環時,它使它成為一個無限循環。
private void dBAddButton_Click(object sender, EventArgs e)
{
List<double> addDBList = new List<double>();
double final;
double added = 0;
addDBList.Add(double.Parse((dB1.Text)));
addDBList.Add(double.Parse((dB2.Text)));
addDBList.Add(double.Parse((dB3.Text)));
addDBList.Add(double.Parse((dB4.Text)));
addDBList.Add(double.Parse((dB5.Text)));
addDBList.Add(double.Parse((dB6.Text)));
for (int i = 0; i < addDBList.Count; i++)
{
added += Math.Pow(10, (i / 10));
}
final = 10 * Math.Log10(added);
totaldB.Text = final.ToString();
}
}
公式基本上是10log[10^(first value/10)+10^(second value/10)...+10^(nth value/10)]
added += Math.Pow(10, (addDBList[i] / 10));
added += Math.Pow(10, (i / 10));
這是你的問題。 i
是數組的索引位置,而不是實際值。 你想用這個:
added += Math.Pow(10, (addDBList[i] / 10));
我是一個整數,它的范圍從0到5.你將整數除以10,並且眾所周知,整數除法沒有分數,所以i / 10總是0.本質上你的內循環就是這個:
added += Math.Pow(10, 0);
這是1.為什么添加最終為6。
你可能意味着:
added += Math.Pow(10, addDBList[i] / 10);
你可以(並且應該)使用這樣的foreach
:
foreach (double decibel in addDBList)
{
added += Math.Pow(10, (decibel / 10));
}
要訪問數組或列表中的值,您必須使用索引和標識符:
added += Math.Pow(10, (addDBList[i] / 10));
更改
added += Math.Pow(10, (i / 10));
至
added += Math.Pow(10, addDBList[i] / 10);
你的for循環是問題...替換它
for (int i = 0; i < addDBList.Count; i++)
{
added += Math.Pow(10, ( addDBList[i] / 10));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.