关于VB编程溢出,在线等

来源:百度知道 编辑:UC知道 时间:2024/05/13 12:01:40
Option Explicit

Private Sub Command1_Click()
Dim N As Integer, M As Integer, K As Integer, SUM As Long

N = CInt(Text1.Text)

M = CInt(Text2.Text)
K = N
SUM = 1
Do While K <= M
SUM = SUM * K
K = K + 1
Loop
Text3.Text = SUM
End Sub
这四求自然数连乘积的程序,但是数取的太大的时候就会溢出,有什么办法可以解决这个问题呢?谢谢!

数取的太大的时候就会溢出,  那是必然的。

即使你使用VB中数据范围最大的decimal, 但他总是有限的。
而你这个乘法他的结果可能的最大值实在太大,所以你必须要限制输入的数据。
当然还有一个办法就是作出错处理,在溢出时给出一个出错提示而不至于使程序不能继续运行下去。

代码如下:

Option Explicit

Private Sub Command1_Click()
    Dim N As Integer, M As Integer, K As Integer, SUM, rep
    On Error GoTo ErrorHandler
   
    N = CInt(Text1.Text)
    M = CInt(Text2.Text)
    K = N
    SUM = CDec(1)
    Do While K <= M
        SUM = SUM * K
        K = K + 1
    Loop