簡體   English   中英

無法在c#中找出這個公式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM