Vb6 VB:计算udt数组的平均值/平均值
我有一个结构数组Vb6 VB:计算udt数组的平均值/平均值,vb6,average,mean,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.
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
那会有用的,但我有很多。计数和高。值,我担心溢出
Dim cAll as Double
请问我还能做什么
如果数组变得非常大,我将得到一个溢出无论如何。我能不能在下一次报表中重新计算平均值?我想是的,但我能想出一个优雅的解决办法
是的,我知道,代码是一种伪代码…声明
调用为双重以避免溢出
Dim cAll as Double
然后
cAll += Convert.ToDouble(m(i).Count) * Convert.ToDouble(m(i).Value)
双范围大约为±1.7×10^308。VB.Net不再支持Type
声明。现在是结构
。你在用vb.net吗?我在用VB6。但我认为答案可以是.NET,我可以把它翻译成VB6,除非有人建议使用.NET更强大的功能来容纳大量的数字。我建议使用LINQ——当然,你不能把它翻译回VB6。另外,vb.net也没有任何问题,因为它将single
赋值给乘法结果,乘法结果可以容纳相当大的数字;)那没用。我更新了我的帖子,让它更清晰。为什么?我真的看不出来,但也许我遗漏了什么?我想在下一次陈述后不去计算平均值。如果可能的话,我想在每次之后计算。顺便说一句,我使用的是VB6,其中变量不能容纳大量的数据,不像VB.NET.VB6,双倍最大值是1.79E+308,你认为你需要更多吗?