PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   vb6高手求教?圓周率的程式如何寫呢? (https://www.pcdvd.com.tw/showthread.php?t=730530)

=風= 2007-07-08 09:35 AM

引用:
作者kec
為什麼樓主要選Gregory-Leibniz series這個收斂很慢的級數來算圓周率? :confused:
要精確到小數點下100位要計算很多很多很多項,怕CPU沒事做嗎? :p

真的要跑很久,以下是小弟的程式碼
目前最快的個人電腦,估計可能要花30分鐘以上
而且只算出小數位十位數左右 :D
如果覺得想狂操cpu可以把long 改成Single
再把2147483646後面再補上兩個0 :D :D :D

Private Sub Form_Load()
Dim pi As Variant
Dim i As Long 'Single
pi = 0
For i = 0 To 2147483646
pi = pi + CDec(1 / (2 * i + 1) * (-1) ^ i)
Next i
pi = 4 * CDec(pi)
Debug.Print pi
End Sub

kec 2007-07-08 09:39 AM

引用:
作者=風=
因為只要這個公式
比較容易懂
其他的公式更難了
小數位一百位
對現在的cpu應該還不至於太困難的工作(小弟猜的 :D )

這個網頁,用 Gregory-Leibniz series計算1000項才精確至小數點下2位。 :stupefy:

另外,Wikipedia上的例子,計算五百萬項Gregory-Leibniz series,小數點下第6位就出錯了。 :stupefy: :stupefy:

你猜精確到小數點下100位要計算多少項? :rolleyes:

capitalm 2007-07-08 10:11 AM

http://home.istar.ca/~lyster/pi.html
quickpi還真快 :ase
而且精確位數可以高達70G :eek:

=風= 2007-07-08 10:17 AM

引用:
作者kec
依這個網頁 (http://www.eveandersson.com/pi/gregory-leibniz),用 Gregory-Leibniz series計算1000項才精確至小數點下2位。 :stupefy:

另外,Wikipedia (http://en.wikipedia.org/wiki/Leibni....80_calculation)上的例子,計算五百萬項Gregory-Leibniz series,小數點下第6位就出錯了。 :stupefy: :stupefy:

你猜精確到小數點下100位要計算多少項? :rolleyes:

原來到500萬項後就出現錯誤了
難怪小弟的程式
怎麼跑都是只對前面6位數 :jolin:
小弟早上都在作白工 :mad:

kec 2007-07-08 10:40 AM

引用:
作者=風=
原來到500萬項後就出現錯誤了
難怪小弟的程式
怎麼跑都是只對前面6位數 :jolin:
小弟早上都在作白工 :mad:

不是Gregory-Leibniz series到五百萬項後就會出現錯誤。
是Gregory-Leibniz series收斂很慢,計算五百萬項也只收斂到小數點下5位。

=風= 2007-07-08 11:29 AM

引用:
作者kec
不是Gregory-Leibniz series到五百萬項後就會出現錯誤。
是Gregory-Leibniz series收斂很慢,計算五百萬項也只收斂到小數點下5位。

了解.........

tim901 2007-07-08 11:39 AM

引用:
作者=風=
目前就是卡在這個問題要如何解 :)

這個題目簡單
我以前做過類似題目
我是用陣列
A(0)~A(99)
每個陣列元素存1位數
超過10就進位到上一個陣列位置
這種寫法複雜的地方就在把算出結果放到每個陣列元素
我敢保證,沒有第二種解法了

=風= 2007-07-08 01:20 PM

小弟也知道要用陣列
只是不知道要如何寫
不過依小弟的程式來說
要計算到二十位數
可能都要好幾天才運算的完
所以此程式
看看就好
因為效能太差了

tim901 2007-07-08 04:03 PM

引用:
作者=風=
小弟也知道要用陣列
只是不知道要如何寫
不過依小弟的程式來說
要計算到二十位數
可能都要好幾天才運算的完
所以此程式
看看就好
因為效能太差了

不會吧
幾千位一下下就算完了
不瞭解為什麼要很久

=風= 2007-07-08 07:59 PM

引用:
作者tim901
不會吧
幾千位一下下就算完了
不瞭解為什麼要很久

那要看你怎麼去寫這個程式
兄台會寫嗎?
會請貼一下程式碼 :)


所有的時間均為GMT +8。 現在的時間是09:44 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。