2

这段代码有问题。我的编码如下:

    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

所有变量都被声明为...

我仍然得到错误:溢出,突出显示的行是:

fitvalchild1 = fitvalchild1 + child1(counter) * 2 ^ (i - 1)
4

2 回答 2

6

数据类型的Long最大大小为 2,147,483,647。
2 ^ (30-1) = 536,870,912
因此,根据 和 的值child1(counter)fitvalchild1您很容易超过最大值。

您在每个循环中都将值添加到自身,因此在 4-5 次循环之后,您可能会收到错误消息。

如果您不介意从整数类型切换,您可以尝试使用Currency数据类型。它的最大大小为 922,337,203,685,477.5807

于 2012-09-26T17:02:40.187 回答
1

long 数据类型的范围是 -2,147,483,648 到 2,147,483,647。child1 和 child2 中的值不需要很大就可以溢出,因为 2^29 非常接近极限。

于 2012-09-26T17:04:19.373 回答