利用公式编写计算圆周率(π)的VB程序

如何用以下图片中的公式(看不清请下载)编一个计算圆周率(π)的程序?(分母不停加2,加减交替)一个文本框设置次数(看看公式就会知道,次数却多越精确),还有一个按钮用于计算... 如何用以下图片中的公式(看不清请下载)编一个计算圆周率(π)的程序?(分母不停加2,加减交替)一个文本框设置次数(看看公式就会知道,次数却多越精确),还有一个按钮用于计算圆周率,要把计算出的圆周率写入 C:\pi.txt ,一定要精确,小数点后的小数全部保留
一定要能算到上千万位!
展开
 我来答
scienceasdf
推荐于2017-09-20 · TA获得超过153个赞
知道答主
回答量:68
采纳率:0%
帮助的人:60.5万
展开全部
sub form_load()
dim a,x as integer
dim pi as single
pi=0
for i=1 to 30000
x=((-1)^(i+1))*(2*i-1)
pi=1/x+pi
next i
print 4*pi
end sub
“一定要能算到上千万位!”
你疯了吗?你学过计算机吗?怎么也不可能吧,一个32位pc机,用vb算? 用这个公式?
用牛顿迭代,vb仅能算到精确14位,速度还行,你这算法算6位电脑就卡爆了。c语言能好些,但也好不到哪去。
更多追问追答
追问
谁说不能算到上千万位?你去下载Super Pi这款软件,这个软件能算3500万位呢!
还有,我要把算好的圆周率导入C:\PI.txt。
追答
你另找高人吧,你这公式对电脑来说是运行速度最慢的公式,你先把高等数学、计算机硬件学、vb都好好学一遍。VB的single占4个字节,取值范围10-45~10+38,有7位有效数字;double有14位有效数字。vb还有个缺点,运算速度奇慢。super pi的程序是用汇编做的,算法也是其他算法,不会是这个天杀的莱布尼兹公式,冗长又慢。
帐号已注销
2015-02-15 · TA获得超过356个赞
知道小有建树答主
回答量:1177
采纳率:35%
帮助的人:105万
展开全部
Sub GetPI(Optional ByVal Nums As Long = 10000)
Nums = Nums \ 5
Dim Max As Long, LapTime As Single, Result() As String
Dim I, J, K As Long, T, G As Long, F()
LapTime = Timer
Max = 10 * Nums
ReDim F(1 To Max)
ReDim Result(Nums)
For I = 1 To Max
    DoEvents
    F(I) = 30000
Next I
For J = Max To 1 Step -10
    T = 0
    
    For I = J To 1 Step -1
        DoEvents
        If J = Max Then
            T = T + F(I) * 1000000
        Else
            T = T + F(I) * 100000
        End If
        
        F(I) = T - Int(T / (8 * I * (2 * I + 1))) * (8 * I * (2 * I + 1))
        T = Int(T / (8 * I * (2 * I + 1))) * (2 * I - 1) ^ 2
    Next I
    
    Result(K) = Format(Int(G + T / 100000) Mod 100000, "00000")
    G = T Mod 100000
    K = K + 1
Next J
txtPI = Join(Result, " ")
txtPI = txtPI & vbCrLf & "用时" & Format(Timer - LapTime, "0.000") & "秒!"
End Sub
Private Sub txtPI_DblClick()
On Error Resume Next
GetPI CLng(InputBox("圆周率小数部分长度?(5-50000)", App.Title, 500))
End Sub
 
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangyingjun999
2012-01-30 · TA获得超过1230个赞
知道小有建树答主
回答量:782
采纳率:0%
帮助的人:403万
展开全部
π的精确值如下(前1000位):
3.
1415926535 8979323846 2643383279 5028841971 6939937510
5820974944 5923078164 0628620899 8628034825 3421170679
8214808651 3282306647 0938446095 5058223172 5359408128
4811174502 8410270193 8521105559 6446229489 5493038196
4428810975 6659334461 2847564823 3786783165 2712019091
4564856692 3460348610 4543266482 1339360726 0249141273
7245870066 0631558817 4881520920 9628292540 9171536436
7892590360 0113305305 4882046652 1384146951 9415116094
3305727036 5759591953 0921861173 8193261179 3105118548
0744623799 6274956735 1885752724 8912279381 8301194912
9833673362 4406566430 8602139494 6395224737 1907021798
6094370277 0539217176 2931767523 8467481846 7669405132
0005681271 4526356082 7785771342 7577896091 7363717872
1468440901 2249534301 4654958537 1050792279 6892589235
4201995611 2129021960 8640344181 5981362977 4771309960
5187072113 4999999837 2978049951 0597317328 1609631859
5024459455 3469083026 4252230825 3344685035 2619311881
7101000313 7838752886 5875332083 8142061717 7669147303
5982534904 2875546873 1159562863 8823537875 9375195778
1857780532 1712268066 1300192787 6611195909 2164201989
追问
我要的是VB程序,不是圆周率值,如果我要值的话,我有3200万位呢!
追答
使用vb必须采取特殊手段与技巧来计算才行,否则只靠double的高精度算法都是无法达到目的的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式