4
我需要對一個雙精度數組中的元素的子集求和。作爲一個簡單的例子 考慮10個元素的陣列:使用vb6中的SUM函數對數組中的元素進行求和
Dim Array(1 To 10) As Double
,其中每個元素被分配某個值。在VB中是否有一個函數會對前5個元素進行求和?顯然這可以使用循環來解決,但是有沒有一種解決方案?我想保持我的代碼收斂。我試過使用SUM但沒有成功。
謝謝!
我需要對一個雙精度數組中的元素的子集求和。作爲一個簡單的例子 考慮10個元素的陣列:使用vb6中的SUM函數對數組中的元素進行求和
Dim Array(1 To 10) As Double
,其中每個元素被分配某個值。在VB中是否有一個函數會對前5個元素進行求和?顯然這可以使用循環來解決,但是有沒有一種解決方案?我想保持我的代碼收斂。我試過使用SUM但沒有成功。
謝謝!
沒有,沒有內置在總結中VB6,你想要什麼功能,但你可以隨便寫一個:
Public Function SumRange(ByRef dblArray() As Double, Optional ByVal StartRange As Long = -1, Optional ByVal Length As Long = -1)
'-1 on StartRange indicates start at low bound
If StartRange = -1 Then
StartRange = LBound(dblArray)
End If
'-1 on Length indicates to span all elements to the end of the array
If Length = -1 Then
Length = UBound(dblArray) - StartRange - 1
End If
Dim dTotal As Double
Dim lNdx As Long
For lNdx = StartRange To StartRange + Length - 1
dTotal = dTotal + dblArray(lNdx)
Next lNdx
SumRange = dTotal
End Function
請注意,我沒有sytaz檢查這一點,所以看錯別字。它可以用來如下:
dResult = SumRange(myArray) 'summ all
dResult = SumRange(myArray, 3) 'sum all starting at offset 3
dResult = SumRange(myArray, , 2) 'sum the the first 2 elements
dResult = SumRange(myArray, 2, 4) 'sum a range start at 2 and with length of 4
您可以修改採取另一種可選的布爾來指定,如果你可以容忍(忽略)出界外的方法。現在,如果您要求總結比數組中存在的更多元素,則會發生錯誤。
您可以指定您使用的是vb6還是vb.net?在vb.net和framework 3.5的情況下,您可以使用Linq在「接收」前5項後進行求和。 – Aphelion 2012-01-05 11:43:07
我剛剛編輯過我的帖子:我正在使用vb6 – Wawel100 2012-01-05 11:47:23
如果您的目的是重複使用代碼,您可能需要創建自己的方法來實現Take和Sum方法。 – Aphelion 2012-01-05 11:52:48