用VB计算PI精确数值到30000位的程序代码
来源:优易学  2011-12-10 21:04:01   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  Attribute VB_Name = "Form1"
  Attribute VB_GlobalNameSpace = False
  Attribute VB_Creatable = False
  Attribute VB_PredeclaredId = True
  Attribute VB_Exposed = False
  Dim CalculatingPi As Integer
  Sub CalculateButton_Click()
  If CalculatingPi = False Then
  CalculatePi
  Else
  End
  End If
  End Sub
  Sub CalculatePi()
  Dim TimeSpent As Double
  TimeSpent = Timer
  OutputBox = "Initializing": DoEvents
  CalculatingPi = True
  CalculateButton.Caption = "Stop!"
  Dim X As Integer
  Dim CarryPosition As Integer
  Dim NumberOfLoops As Integer
  Dim LengthOfNumbers As Integer
  LengthOfNumbers = TextBox_LengthOfNumbers + 3
  NumberOfLoops = Int(2 / 3 * LengthOfNumbers)
  ReDim ArcTangent5(1 To LengthOfNumbers) As String * 1
  ReDim ArcTangent239(1 To LengthOfNumbers) As String * 1
  ReDim MultipliedArcTangent5(1 To LengthOfNumbers + 1) As String * 1
  ReDim MultipliedArcTangent239(1 To LengthOfNumbers + 1) As String * 1
  OutputBox = "Calculating ArcTangent of 1/5": DoEvents
  FindArcTangent 5, NumberOfLoops, LengthOfNumbers, ArcTangent5()
  OutputBox = "Calculating the ArcTangent of 1/239": DoEvents
  FindArcTangent 239, NumberOfLoops, LengthOfNumbers, ArcTangent239()
  OutputBox = "Multiplying ArcTan of 1/5 by 16": DoEvents
  MultiplyArray ArcTangent5(), 16, MultipliedArcTangent5()
  OutputBox = "Multiplying ArcTan of 1/239 by 4": DoEvents
  MultiplyArray ArcTangent239(), 4, MultipliedArcTangent239()
  OutputBox = "Subtracting the Multiplied Arctangents": DoEvents
  For X = LengthOfNumbers To 1 Step -1
  If MultipliedArcTangent5(X) < MultipliedArcTangent239(X) Then
  CarryPosition = X - 1
  Do Until MultipliedArcTangent5(CarryPosition) <> "0"
  MultipliedArcTangent5(CarryPosition) = "9"
  CarryPosition = CarryPosition - 1
  Loop
  MultipliedArcTangent5(CarryPosition) = CStr(CInt(MultipliedArcTangent5(CarryPosition)) - 1)
  MultipliedArcTangent5(X) = CStr((CInt(MultipliedArcTangent5(X)) + 10) - CInt(MultipliedArcTangent239(X)))
  Else
  MultipliedArcTangent5(X) = CStr(CInt(MultipliedArcTangent5(X)) - CInt(MultipliedArcTangent239(X)))
  End If
  DoEvents
  Next X
  Dim PiValue As String
  OutputBox = ""
  For X = 1 To LengthOfNumbers - 3
  PiValue = PiValue & MultipliedArcTangent5(X)
  If X Mod 5 = 0 Then
  PiValue = PiValue & " "
  End If
  Next X
  OutputBox = PiValue
  MsgBox "Pi calculated to " & LengthOfNumbers - 3 & " decimal places." & Chr$(13) & "Completed " & NumberOfLoops & " iterations." & Chr$(13) & "Spent " & (Timer - TimeSpent) / 60 & " minutes calculating.", 64, "Calculations Complete"
  CalculatingPi = False
  End Sub
  Sub FindArcTangent(ArcTanToFind As Integer, NumberOfLoops As Integer, LengthOfNumbers As Integer, ArcTangent() As String * 1)
  Dim StartPos As Integer
  Dim Sum As Long
  Dim X As Integer
  Dim Divisor As Long
  Dim Remainder As Long
  Dim CarryPosition As Long
  Dim DividedInto As Integer
  ReDim Answer(1 To LengthOfNumbers) As String * 1
  ReDim Divided(1 To LengthOfNumbers) As String * 1
  StartPos = 1

上一页  [1] [2] [3] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训