VB数据溢出问题,气死了

来源:百度知道 编辑:UC知道 时间:2024/05/30 21:19:51
g = (a * b * c * d * e) / (1024 * 1024 * 1024 * 8)
这里老错,请问怎么处理啊?
语句很简单

Private Sub Command1_Click()
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
Dim e As Long
Dim f As Long
Dim g As Long
Dim h As Long
a = Text1.Text
b = Text2.Text
c = Text3.Text
d = Text4.Text
e = Text5.Text
g = (a * b * c * d * e) / (1024 * 1024 * 1024 * 8)
h = (a * b * c * d) / (1000 * 1000)
Print g, h

End Sub

long的范围是-2147483648~2147483647
1024*1024*1024*8已溢出
建议这样子(a/1024)*(b/1024)*(c/1024)*d*e/8

用long型就可以计算了,但是要注意,计算时有些地方可以先除后乘,就可以防止溢出,同时也节约了空间。
所以只需改成a*b*c*d*e\1024\1024\1024\8就可以了。
x\y相当于int(x/y)。

Gerald_Bond 说的很对 不过结果不够精确了.