所以我有这个程序,它接受列表框中项目的值并将它们放入一个数组中。我唯一的问题是,当列表框中有一个偶数的数字时,它应该将两个值相加并除以2以找到中位数。出于某种原因,它拒绝将其输出为十进制,只是输出一个整数。我试图将所有值更改为小数,但这只会创建一个错误,告诉我'选项严格阻止从长到十进制的转换'或类似的东西(我需要Op stric on)。谁能告诉我为什么我的输出不是以小数形式出现的?
Dim arrNumbers(lstNumbers.Items.Count), intLength, intNum1, intNum2 As Integer
Dim decMedian As Decimal
For i = 0 To lstNumbers.Items.Count - 1
arrNumbers(i) = CInt(lstNumbers.Items(i))
Next
intLength = arrNumbers.Length - 1
Array.Sort(arrNumbers)
If intLength Mod 2 <> 0 Then
MessageBox.Show("Median =" & arrNumbers(arrNumbers.GetUpperBound(0) \ 2 + 1).ToString)
Else
intNum1 = arrNumbers(arrNumbers.GetUpperBound(0) \ 2)
intNum2 = arrNumbers((arrNumbers.GetUpperBound(0) \ 2) + 1)
decMedian = (intNum1 + intNum2) \ 2
MessageBox.Show("Median =" & decMedian.ToString("n2"))
End If
答案 0 :(得分:4)
替换
decMedian = (intNum1 + intNum2) \ 2
与
decMedian = (intNum1 + intNum2) / 2
\
是整数除法运算符。查看MSDN上的详细信息。