2010-03-08 34 views
0

我有一個顯然是「簡單」的問題,但由於某種原因我找不到解決方案...
我有n百萬個不同大小的文件,我想查找平均值文件大小。
爲了簡化它,我將它們分成了16KB的倍數。
在一組文件中的實際平均文件大小

< 16 KB = 18689546頁的文件
< 32 KB = 1365713個文件
< 48 KB = 1168186個文件
...

當然,簡單(文件TOTAL_SIZE /數)不工作。它給出了平均291KB ...
什麼是計算實際平均值的算法...?

THX, JD

+0

你使用什麼數據類型?這聽起來像你可能有溢出問題。 – 2010-03-08 09:39:08

回答

1

你可能會運行與總結文件大小時超支問題(總規模可能不適合32位值)。最簡單的修復方法可能是嘗試使用64位整數作爲保存總和的變量。

+0

我確實使用64位。 問題是(total_size /文件數量)無法工作。 例如,用這個公式,1KB的1個文件和1MB的1個文件會給出94KB的平均值......這當然是錯誤的。 – 2010-03-08 09:47:57

+1

你可能在尋找與平均水平不同的東西嗎? 94 KB是11個1.01 MB文件的正確平均值。你期望得到這些文件的數字是多少? – 2010-03-08 09:55:30

+1

「這當然是錯誤的」 - 我想你需要更清楚地指出你要找的平均數。 10個1KB文件和1個1MB文件的平均值(通常稱爲'平均值')大小爲94KB,所以如果您不想查找含義,您應該清楚您正在查找的內容。 – 2010-03-08 09:59:04