转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
用VB计算PI精确数值到30000位的程序代码。         ★★★★

用VB计算PI精确数值到30000位的程序代码。

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1692 更新时间:2009/4/23 16:39:59
im 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
   
    For X = 1 To LengthOfNumbers
        ArcTangent(X) = "0"
        Divided(X) = "0"
        Answer(X) = "0"
    Next X

   
    Select Case ArcTanToFind
        Case 5
            ArcTangent(1) = "2"
       
        Case 239
            X = 1
FillInNumbers:
            If X <= LengthOfNumbers Then ArcTangent(X) = "0": X = X + 1
            If X <= LengthOfNumbers Then ArcTangent(X) = "0": X = X + 1
            If X <= LengthOfNumbers Then ArcTangent(X) = "4": X = X + 1
            If X <= LengthOfNumbers Then ArcTangent(X) = "1": X = X + 1
            If X <= LengthOfNumbers Then ArcTangent(X) = "8": X = X + 1
            If X <= LengthOfNumbers Then ArcTangent(X) = "4": X = X + 1
            If X <= LengthOfNumbers Then ArcTangent(X) = "1": X = X + 1
            If X <= LengthOfNumbers Then GoTo FillInNumbers
    End Select
   
   
    For X = 1 To LengthOfNumbers
        Answer(X) = ArcTangent(X)
    Next X
   
   
   
    Divisor = 3
    Do Until (Divisor - 1) / 2 = NumberOfLoops + 1
        For X = Int(StartPos) To LengthOfNumbers
                             
            Remainder = Remainder * 10
            Remainder = Remainder + CInt(Answer(X))
            Do Until Remainder < (ArcTanToFind ^ 2)
                Remainder = Remainder - (ArcTanToFind ^ 2)
                DividedInto = DividedInto + 1
            Loop

            Answer(X) = CStr(DividedInto)
            Divided(X) = Answer(X)
            DividedInto = 0
   
            DoEvents
        Next X

   
        DoneDividing = 0
        Remainder = 0
        DividedInto = 0
   
   
        For X = Int(StartPos) To LengthOfNumbers
            Remainder = Remainder * 10
            Remainder = Remainder + CInt(Divided(X))

            Do Until Remainder < Divisor
                Remainder = Remainder - Divisor
                DividedInto = DividedInto + 1
            Loop

            Divided(X) = CStr(DividedInto)
            DividedInto = 0
   
            DoEvents
        Next X
        Remainder = 0
        DividedInto = 0
        If Divisor Mod 4 = 1 Then
            For X = LengthOfNumbers To 1 Step -1
                Sum = Sum + CInt(Divided(X)) + CInt(ArcTangent(X))
                ArcTangent(X) = CStr(Sum Mod 10)
                Sum = Int(Sum / 10)
                DoEvents
            Next X
            Sum = 0
        Else
            For X = LengthOfNumbers To 1 Step -1
                If ArcTangent(X) < Divided(X) Then
               
                    CarryPosition = X - 1
                    Do Until ArcTangent(CarryPosition) <> "0"
                        ArcTangent(CarryPosition) = "9"
                        CarryPosition = CarryPosition - 1
                    Loop
                    ArcTangent(CarryPosition) = CStr(CInt(ArcTangent(CarryPosition)) - 1)
                    ArcTangent(X) = CStr((CInt(ArcTangent(X)) + 10) - CInt(Divided(X)))
                Else
                    ArcTangent(X) = CStr(CInt(ArcTangent(X)) - CInt(Divided(X)))
                End If
                DoEvents
            Next X
            CarryPosition = 0
        End If
        Divisor = Divisor + 2
        OutputBox = "Calculating ArcTangent of 1/" & ArcTanToFind & ", Done with iteration " & (Divisor - 1) / 2
        DoEvents
        StartPos = StartPos + 1.25
    Loop
End Sub
Sub MultiplyArray(ArrayToMultiply() As String * 1, NumberToMultiplyBy As Integer, Answer() As String * 1)
    Dim Position As Integer
    Dim SmallAnswer As Integer
    Dim NumberToCarry As Integer
    For Position = TextBox_LengthOfNumbers + 3 To 1 Step -1
        SmallAnswer = (CInt(ArrayToMultiply(Position)) * NumberToMultiplyBy) + NumberToCarry
        Answer(Position) = Right$(CStr(SmallAnswer), 1)
        If SmallAnswer < 10 Then
            NumberToCarry = 0
        Else
            NumberToCarry = CInt(Left$(CStr(SmallAnswer), CInt(Len(CStr(SmallAnswer))) - 1))
        End If
        DoEvents
    Next Position
End Sub

上一页  [1] [2] 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台