打印本文 打印本文 关闭窗口 关闭窗口
用VB计算PI精确数值到30000位的程序代码。
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1693  更新时间:2009/4/23 16:39:59  文章录入:mintao  责任编辑:mintao

 

代碼如下﹕另存為窗口﹐先申明不是我寫的

VERSION 5.00
Begin VB.Form Form1
  BackColor      =  &H80000016&
  BorderStyle    =  1  ''''Fixed Single
  Caption        =  "Pi Calculator"
  ClientHeight    =  5580
  ClientLeft      =  45
  ClientTop      =  330
  ClientWidth    =  7320
  Icon            =  "Pi.frx":0000
  LinkTopic      =  "Form1"
  MaxButton      =  0  ''''False
  MinButton      =  0  ''''False
  MouseIcon      =  "Pi.frx":030A
  MousePointer    =  99  ''''Custom
  ScaleHeight    =  5580
  ScaleWidth      =  7320
  StartUpPosition =  2  ''''CenterScreen
  Begin VB.TextBox OutputBox
      BeginProperty Font
        Name            =  "MS Sans Serif"
        Size            =  13.5
        Charset        =  0
        Weight          =  700
        Underline      =  0  ''''False
        Italic          =  0  ''''False
        Strikethrough  =  0  ''''False
      EndProperty
      ForeColor      =  &H0000FF00&
      Height          =  1575
      Left            =  0
      MultiLine      =  -1  ''''True
      ScrollBars      =  2  ''''Vertical
      TabIndex        =  2
      Top            =  675
      Width          =  7335
  End
  Begin VB.TextBox TextBox_LengthOfNumbers
      BackColor      =  &H80000014&
      BeginProperty Font
        Name            =  "Times New Roman"
        Size            =  18
        Charset        =  0
        Weight          =  400
        Underline      =  0  ''''False
        Italic          =  0  ''''False
        Strikethrough  =  0  ''''False
      EndProperty
      ForeColor      =  &H0000FF00&
      Height          =  480
      Left            =  45
      TabIndex        =  1
      Text            =  "10"
      Top            =  45
      Width          =  4335
  End
  Begin VB.CommandButton CalculateButton
      Caption        =  "Pi !"
      BeginProperty Font
        Name            =  "Times New Roman"
        Size            =  26.25
        Charset        =  0
        Weight          =  700
        Underline      =  0  ''''False
        Italic          =  0  ''''False
        Strikethrough  =  0  ''''False
      EndProperty
      Height          =  630
      Left            =  45
      TabIndex        =  0
      Top            =  4905
      Width          =  1785
  End
End
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
    D

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口