为什么这个VB题要这样

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:22:17
Sub SaveData()
Open App.Path & "\" & "out84.txt" For Output As #1
Print #1, Text1.Text
Close #1
End Sub

Function Fun()
Dim i As Integer
Dim temp As Double
For i = o To 500
If i Mod 3 <> 0 Then
temp = temp + i
End If
Next i
Fun = temp
End Function

Private Sub Cmd1_Click()
d = Fun()
Text1.Text = d
SaveData
End Sub

Dim temp As Double
为什么这里要定义为双精度
我定义为integer
运行溢出

这段代码是求500以内的非3的倍数的数的和,这个和超过了32767,而integer最大就是32767,因此会溢出。你可以设成long,没必要设成Double的。

integer的范围是-32767-=32768,范围很小。但是你的程序中要计算500以内所有不能被3整除的数的累加和,这个和是很大的,超过了整数的范围,所以就要用范围更大的DOUBLE仂

double和integer只是范围不同
integer最大才32767,如果结果超过这个,就要用更大范围了.