【发布时间】:2013-10-25 03:15:07
【问题描述】:
我有一个结构数组
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:是的,我知道,代码是一种伪代码......
【问题讨论】:
-
VB.Net 不再支持
Type声明。现在是structure。你在用 vb.net 吗? -
我正在使用 VB6。但我认为回复可以在 .NET 中,我可以将其翻译为 VB6,除非有人建议使用 .NET 的更大功能来容纳大量数字。
-
我还是建议使用 LINQ - 当然,您不能将其转换回 vb6。无论如何,vb.net 也没有问题,因为它将
single分配给乘法的结果,它可以容纳相当大的数字;)