VB高手进来,问题还是没有解决`!

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:05:54
Private Sub Form_click()
Dim i As Long
For i = 2001 To 1 Step -1
If i <> 1 Then
i = i * (i - 1)
End If
Next
Print i
End Sub
我已经定义为长整形了,我的意图是打印出2001*2000*1999*……1的值
还是:溢出、
请问我该怎么办!

你看没有看?
用不论啥都得溢出!
除非自己定义任意长的数!
不要说long才10位,我前面已经告诉你了
算到171的阶乘是最多的了!已经306位了,再乘308位就是vb的极限!而尾数已经超了!

自己用链表定义大数类,然后再自己写大数的加法和乘法,就可以表示机会无限位的大数了

Private Sub Form_Click()
Dim i As Double
Dim j As Integer
j = 0
For i = 2001 To 1 Step -1
j = j + 1
If j = 10 Then
Print Chr(10) + Chr(13); i * (i - 1),
j = 0
Else
Print i * (i - 1),
End If
Next
End Sub

Private Sub Form_Load()
Form1.WindowState = 2
End Sub