读书人

请高手帮忙把VB转换成VB.NET代码不多

发布时间: 2012-02-19 19:43:37 作者: rapoo

请高手帮忙把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()


Next

End Sub
[解决办法]
这样:

Sub calcfactorial(ByVal num As Integer, Optional ByRef POWER As String = " ", Optional ByRef FIRSTNUM As String = " ")
Dim I, temp2 As Integer
Dim TEMP As Double
Dim STIME As Single
TEMP = 0
temp2 = 0
STIME = CSng(Microsoft.VisualBasic.Timer())
For I = 1 To num
TEMP = TEMP + System.Math.Log(I) / System.Math.Log(10)
If TEMP > 1000000 Then
temp2 = temp2 + 1
TEMP = TEMP - 1000000
End If
Next
POWER = VB6.Format(Int(TEMP + 1), "000000 ")
TEMP = TEMP - Val(POWER)
POWER = temp2 & POWER
If Val(POWER) < 10 ^ 6 Then POWER = CStr(Val(POWER))
FIRSTNUM = Replace(CStr(10 ^ (TEMP)), ". ", " ").Substring(0, 10)

Debug.Print(Microsoft.VisualBasic.Right(Space(9) & num, 9) & "! : 用时 " & Microsoft.VisualBasic.Right(Space(8) & Format(Timer - STIME, "0.00000 "), 8) & " 秒, 结果 " & Microsoft.VisualBasic.Right(Space(10) & POWER, 10) & " 位,前10位为 " & FIRSTNUM)
End Sub


Private Sub Command1_Click()
Dim I, J As Integer
For J = 2 To 7
For I = 1 To 10
calcfactorial(CInt(I * 10 ^ J))
Next
Debug.Print( " ")
Next
End Sub

读书人网 >VB Dotnet

热点推荐