当前位置:编程学习 > VB >>

下面这个程序能否经过修改算到小数点后十万位?

下面这个程序能否经过修改算到小数点后十万位?

'采用普遍的傅立叶级数展开方法 pi=2+1/3*(2+2/5*(2+3/7*(2+4/9*(2+5/11  .....))))))

'输入:需计算的圆周率位数,理论精度约30万位

'Add a commandbutton and textbox(multine=true,scrollbars=Vertical) to form1

Option Explicit

Private Sub Command1_Click()
getpi CLng(InputBox("生成多少位数(1-50000)的PI?", "提示", 10000))
End Sub

Sub getpi(Optional ByVal nums As Long = 10000)
nums = nums \ 5
Dim max As Long, laptime As Single, result() As String

Dim i As Long, j As Long, t, d As Long, g, k As Long, f()
laptime = Timer
max = 18 * nums
ReDim f(0 To max)
ReDim result(nums)
For i = 0 To max
f(i) = 20000
Next
result(0) = "π=" & vbCrLf
g = 20000
For j = max To 1 Step -18
t = 0

For i = j To 1 Step -1
t = t + f(i) * 100000
d = 2 * i + 1

f(i) = t - Int(t / d) * d
t = Int(t / d) * i
Next
k = k + 1
result(k) = Format(Int(g + t / 100000) Mod 100000, "00000")
If k Mod 20 = 0 Then result(k) = result(k) & vbCrLf
If k Mod 200 = 0 Then result(k) = result(k) & "---[" & k * 5 & "]---" & vbCrLf
g = t Mod 100000
Next
Text1.Text = Join(result, " ")
Me.Caption = "计算完毕!总计用时" & Timer - laptime & "秒!"
End Sub 
把所有的Long换成Double 十万位?干什么用?
十万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万位,结果保存到哪里? 结果可保存到写字板呀! 可以啊。

不过你只能保存到其它地方,字符串变量是不行的。

QQ群 48866293 OFFICE应用挖掘 
MS OFFICE(ACCESS\EXCE\WORD等应用技术探讨与交流!技术群,请阅群论坛中的《踢人规则》 double应该可以 不知你要干什么,小数点后有用的着十万位的吗?如果确实要这么做,那只能保存成字符串 只能使用字符串保存了。
S1 & S2 & .... &n
或者 Append 到文件。
> 200,000 个字节。(符)  如果算法和代码无误的话,应该是能"计算"到10万位.
但是用Text1.Text来显示是不行的, 好像记得text控件最多显示64K数据,10万就是1M了 模拟大数运算?
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,