请问这段求N阶乘的程序有什么问题?

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:07:53
计算170以下的就可以,当超过170就溢出了.请问为什么?都设置为Double类型了,为什么还会溢出?
=================================================
Dim i, x, y As Double
If IsNumeric(Text2.Text) = False Then '判断输入是否为数字
MsgBox "输入值非法", vbCritical, "提醒"
Exit Sub
End If
If Int(Text2.Text) - Text2.Text <> 0 Then '判断输入是否为整数
MsgBox "请输入整数", vbCritical, "提醒"
Exit Sub
End If
If Text2.Text < 0 Then
MsgBox "输入值非法", vbCritical, "提醒"
Exit Sub
End If
If Text2.Text > 170 Then
MsgBox "输入值请不要超过170", vbExclamation, "提醒"
Exit Sub
End If
x = 1
y = Text2.Text
For i = 1 To y
x = x * i
Next i
MsgBox Text2.Text & " 的阶乘等于 " & x, vbInformation, "结果"
Text2.Text = ""

Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E+308。
170!=7.25741561530799E+306
171!的结果超界