关于VB求阶乘的问题

Private Sub Command1_Click()
n = Val(Text1.Text)
s = 1
If n = 0 Then

s = 1

Else

For i = 1 To n

s = s * i
Next i

End If

If n <> Int(n) Then
s = "输入错误"
Else
s = Str(s)

End If

Text2.Text = s

End Sub

Private Sub Command2_Click()

Text1.Text = ""

Text2.Text = ""

Text1.SetFocus

End Sub

Private Sub Command3_Click()

End

End Sub
在输入18以上的时候阶乘值不对~~~

18的阶乘没超过 又精度浮点的范围,刚刚测试了一下。
还有 你计算出来的值是 科学计术法的值

给出简单的代码,自己改写你的代码:
Dim i As Integer
Dim b As Single
b = 1
For i = 1 To 18
b = b * i
Next i
Print Format(b, "###############################")

还有个提示。 s = Str(s) 这一句可以省略的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-19
你的变量s是定义成什么类型的,即使是双精度浮点数也只几位有效数字,其数值范围为1.7E-308~1.7E+308,也就是说18阶乘超出了数据能显示的范围
相似回答