此代码出现问题。 我的编码如下:
fitvalchild1 = 0
fitvalchild2 = 0
For i = 1 To 30
counter = 30
Do While counter > 0
fitvalchild1 = fitvalchild1 + child1(counter) * 2 ^ (i - 1)
fitvalchild2 = fitvalchild2 + child2(counter) * 2 ^ (i - 1)
counter = counter - 1
Loop
Next i
所有变量都声明为long ...
我仍然得到错误:溢出并且突出显示的行是:
fitvalchild1 = fitvalchild1 + child1(counter) * 2 ^ (i - 1)
答案 0 :(得分:6)
Long
数据类型的最大大小为2,147,483,647
2 ^(30-1)= 536,870,912
因此,根据child1(counter)
和fitvalchild1
的值,您很容易超过最大值。
你将每个循环添加到自身的值,所以在4-5循环之后,你可能会得到错误。
如果您不介意从整数类型切换,可以尝试使用Currency
数据类型。它的最大尺寸为922,337,203,685,477.5807
答案 1 :(得分:1)
长数据类型的范围是-2,147,483,648到2,147,483,647。 child1和child2中的值不需要非常大,因为2 ^ 29非常接近限制。