我的某段代码如下:Dim m_ScaleToHight(1 To 10) As Double
For i = 1 To 10 Step 0.2
    m_ScaleToHight(i) = m_MinorScaleToHight(i, j)
    Debug.Print "m_ScaleToHight(" & i & ") = " & m_ScaleToHight(i)
Next打印出来的结果是:
m_ScaleToHight(1) = 1
m_ScaleToHight(1.2) = 1.2
m_ScaleToHight(1.4) = 1.4
m_ScaleToHight(1.6) = 1.6
m_ScaleToHight(1.8) = 1.8
m_ScaleToHight(2) = 2
m_ScaleToHight(2.2) = 2.2
m_ScaleToHight(2.4) = 2.4
m_ScaleToHight(2.6) = 2.6 可是再当我用MsgBox查看数组值时,却发现有的数组元素值不正确了,例如
m_ScaleToHight(1) = 1.4
等等!请问这是什么原因?有办法解决这个小数数组值错乱的问题吗?

解决方案 »

  1.   

    更正:
    m_ScaleToHight(i) = m_MinorScaleToHight(i, j) 
    应为:
    m_ScaleToHight(i) = i
      

  2.   

    在循环体
    For i = 1 To 10 Step 0.2
        m_ScaleToHight(i) = i
        Debug.Print "m_ScaleToHight(" & i & ") = " & m_ScaleToHight(i)
    Next
    中使用
    MsgBox m_ScaleToHight(1)
    很正常,可是一旦结束循环,在循环体外部使用
    MsgBox m_ScaleToHight(1)
    数组值就错乱了
      

  3.   

    数组下标是不能使用小数的,小数会被转化成整数!!
    注意这句:
        m_ScaleToHight(i) = m_MinorScaleToHight(i, j)
        Debug.Print "m_ScaleToHight(" & i & ") = " & m_ScaleToHight(i)
    m_ScaleToHight(1)、m_ScaleToHight(1.2)、m_ScaleToHight(1.4)其实都是m_ScaleToHight(1)
    由于 m_ScaleToHight(i) 被赋值后立即被打印,所以产生了带迷惑性的结果~~