VB:计算udt数组的平均值/平均值

时间:2013-10-16 20:19:04

标签: vb6 average mean

我有一个结构数组

Private Type udtSingle
    Dim Count As Long
    Dim Value As Single
end Type

Private m(2) As udtSingle

假设数组填充如下:

m(0).Count = 5
m(0).Value = 100
m(1).Value = 1
m(1).Count = 10

你可以看到我们有5 * 100和1 * 10。

计算平均值的最佳方法是什么?

for i as integer = 0 to m.upperbound()
     cAll += m(i).Count * m(i).Value
     iCount+=m(i).Count
next i

dim average as currency
average = cAll / iCount

那会有效,但我真的很多.Count和高.Value,我害怕溢出。

我还能做什么呢?

如果阵列变得非常庞大,我无论如何都会得到溢出。我可以不在for-next-statement中重新计算平均值吗?我想是这样,但我能想到一个优雅的解决方案。

ps:是的,我知道,代码是一种伪代码......

1 个答案:

答案 0 :(得分:0)

cAll声明为Double以避免溢出。

Dim cAll as Double

然后

cAll += Convert.ToDouble(m(i).Count) * Convert.ToDouble(m(i).Value)

双倍范围大约为±1.7×10 ^ 308。

相关问题