我想計算浮點數組的平均值。我需要使用索引,因爲這是在二進制搜索中,所以頂部和底部會移動。 (大圖我們試圖優化半範圍估計,所以我們不必每次都重新創建陣列)。c#float []平均丟失精度
反正我寫了一個自定義的平均循環,我得到比C#的平均精度2位以下()方法
float test = input.Average();
int count = (top - bottom) + 1;//number of elements in this iteration
int pos = bottom;
float average = 0f;//working average
while (pos <= top)
{
average += input[pos];
pos++;
}
average = average/count;
例如:
0.0371166766 - c# 0.03711666 - my loop 125090.148 - c# 125090.281 - my loop
嘗試存儲'average'作爲雙,並在年底轉換爲'float'。 – Servy 2013-02-12 18:32:56
我也會重命名你的累加器'sum',並最終使用一個新的變量'average'。 – CodesInChaos 2013-02-12 18:36:16
浮點數字幾乎總是隻是一個近似值。如果您的平均計算與c#Average()不同,您將得到不同的結果。看看這個:http://stackoverflow.com/questions/4664662/understanding-floatingpoint-problems – Jobo 2013-02-12 18:43:16