请高手帮忙把VB转换成VB.NET代码,不多,但是很难,该怎么解决
请高手帮忙把VB转换成VB.NET代码,不多,但是很难
Sub calcfactorial(ByVal num As Long, Optional ByRef POWER As String, Optional ByRef FIRSTNUM As String)
Dim I As Long, TEMP As Double, temp2 As Long, STIME As Single
TEMP = 0
temp2 = 0
STIME = Timer
For I = 1 To num
TEMP = TEMP + Log(I) / Log(10)
If TEMP > 1000000 Then
temp2 = temp2 + 1
TEMP = TEMP - 1000000
End If
Next
POWER = Format(Int(TEMP + 1), "000000 ")
TEMP = TEMP - Val(POWER)
POWER = temp2 & POWER
If Val(POWER) < 10 ^ 6 Then POWER = Val(POWER)
FIRSTNUM = Left(Replace(10 ^ (TEMP), ". ", " "), 10)
Debug.Print Right(Space(9) & num, 9) & "! : 用时 " & Right(Space(8) & Format(Timer - STIME, "0.00000 "), 8) & " 秒, 结果 " & Right(Space(10) & POWER, 10) & " 位,前10位为 " & FIRSTNUM
End Sub
Private Sub Command1_Click()
Dim I As Long, J As Long
For J = 2 To 7
For I = 1 To 10
calcfactorial I * 10 ^ J
Next
Debug.Print
Next
End Sub
请教能人!谢谢啦
------解决方案--------------------
Private Sub calcfactorial(ByVal num As Long, _
Optional ByRef POWER As String = " ", _
Optional ByRef FIRSTNUM As String = " ")
Dim I As Long
Dim TEMP As Double
Dim temp2 As Long
Dim t1, t2 As DateTime
TEMP = 0
temp2 = 0
t1 = Now
For I = 1 To num
TEMP = TEMP + Math.Log(I) / Math.Log(10)
If TEMP > 1000000 Then
temp2 = temp2 + 1
TEMP = TEMP - 1000000
End If
Next
POWER = Format(Int(TEMP + 1), "000000 ")
TEMP = TEMP - Val(POWER)
POWER = temp2 & POWER
If Val(POWER) < 10 ^ 6 Then POWER = Val(POWER)
FIRSTNUM = Replace(10 ^ (TEMP), ". ", " ").Substring(0, 10)
t2 = Now
MsgBox((Space(9) & num).Substring((Space(9) & num).Length - 9) & "! : 用时 " & _
DateDiff(DateInterval.Second, t1, t2) & " 秒, 结果 " & _
(Space(10) & POWER).Substring((Space(10) & POWER).Length - 10) & " 位,前10位为 " & FIRSTNUM)
End Sub
Private Sub Command1_Click()
Dim I As Long, J As Long
For J = 2 To 7
For I = 1 To 10
calcfactorial(I * 10 ^ J)
Next
'Debug.Print()
Sub calcfactorial(ByVal num As Long, Optional ByRef POWER As String, Optional ByRef FIRSTNUM As String)
Dim I As Long, TEMP As Double, temp2 As Long, STIME As Single
TEMP = 0
temp2 = 0
STIME = Timer
For I = 1 To num
TEMP = TEMP + Log(I) / Log(10)
If TEMP > 1000000 Then
temp2 = temp2 + 1
TEMP = TEMP - 1000000
End If
Next
POWER = Format(Int(TEMP + 1), "000000 ")
TEMP = TEMP - Val(POWER)
POWER = temp2 & POWER
If Val(POWER) < 10 ^ 6 Then POWER = Val(POWER)
FIRSTNUM = Left(Replace(10 ^ (TEMP), ". ", " "), 10)
Debug.Print Right(Space(9) & num, 9) & "! : 用时 " & Right(Space(8) & Format(Timer - STIME, "0.00000 "), 8) & " 秒, 结果 " & Right(Space(10) & POWER, 10) & " 位,前10位为 " & FIRSTNUM
End Sub
Private Sub Command1_Click()
Dim I As Long, J As Long
For J = 2 To 7
For I = 1 To 10
calcfactorial I * 10 ^ J
Next
Debug.Print
Next
End Sub
请教能人!谢谢啦
------解决方案--------------------
Private Sub calcfactorial(ByVal num As Long, _
Optional ByRef POWER As String = " ", _
Optional ByRef FIRSTNUM As String = " ")
Dim I As Long
Dim TEMP As Double
Dim temp2 As Long
Dim t1, t2 As DateTime
TEMP = 0
temp2 = 0
t1 = Now
For I = 1 To num
TEMP = TEMP + Math.Log(I) / Math.Log(10)
If TEMP > 1000000 Then
temp2 = temp2 + 1
TEMP = TEMP - 1000000
End If
Next
POWER = Format(Int(TEMP + 1), "000000 ")
TEMP = TEMP - Val(POWER)
POWER = temp2 & POWER
If Val(POWER) < 10 ^ 6 Then POWER = Val(POWER)
FIRSTNUM = Replace(10 ^ (TEMP), ". ", " ").Substring(0, 10)
t2 = Now
MsgBox((Space(9) & num).Substring((Space(9) & num).Length - 9) & "! : 用时 " & _
DateDiff(DateInterval.Second, t1, t2) & " 秒, 结果 " & _
(Space(10) & POWER).Substring((Space(10) & POWER).Length - 10) & " 位,前10位为 " & FIRSTNUM)
End Sub
Private Sub Command1_Click()
Dim I As Long, J As Long
For J = 2 To 7
For I = 1 To 10
calcfactorial(I * 10 ^ J)
Next
'Debug.Print()