Dim Arr() As Integer,m=23 时 arr(22)=17711,arr(23)=28657,可知arr(24)=17711+28657=46368,m=24会超出 Integer 的范围了,因此溢出, Integer 的最大值=32757
。
Dim Arr() As Long,m=46
时
arr(45)=1134903170,arr(46)=1836311903,可知arr(47)=2971215073,m=47会超出 Long 的范围了,因此溢出,
Long 的最大值=2147483647
。
Dim Arr() As Single ,m=186 时 arr(185)=2.05697E+38,arr(186)=3.32825E+38, 可知arr(187)=5.38522E+38,m=187会超出 Single 的范围了,因此溢出, Single 的最大值=3.402823E+38
。
Dim Arr() As Double,只测试到 m=500 时 arr(499)=8.61682916002383E+103,arr(500)=1.39423224561698E+104, 远小于 Double 的最大值1.79769313486232E+308,因此没有溢出。但如果 m 够大,超出 Double 的最大值也会溢出的。
那么需要根据你的 m = Val(Op1(a).Caption) 设置 arr 的数据类型,大于23,小于46,使用 Long 数据,大于46,小于186,使用 Single 数据,大于186,使用 Double 数据,但这个上限没有测试,估计在1000以上。
[此贴子已经被作者于2018-6-12 18:30编辑过]