2010-10-29 41 views
0

我們在程序中執行的數值操作受限於語言爲給定數據類型(或可能是硬件支持)指定的字節數。假設我可以用整數來計算我的薪水(甚至「短」對於一年的收入綽綽有餘!!!)),但不能與比爾蓋茨的財富一樣。所以,我們去做很久很久的事情。但是,我們是不是仍然受到給予我們的位數的控制。仿真軟件中的數字操作

那麼,如果我模擬軟件中的數值操作,那麼該怎麼辦?說一個抽象的類,可以對1000位數的數字進行數字運算... 當然它太慢了,但我並不太在意複雜性,但更多的只是可計算性......

也許我可以用它在幾個月內計算PI到1000位精度或幾年內的Mersenne Primes,並帶回家$ 100K;)

所以現在我的問題, 1)是否已有任何這樣的庫來做到這一點那裏的東西(在C/C++中)。 2)如果我執行一個,你有什麼建議嗎? (+, - ,*,/,%,< <,>>操作應該足夠我猜)

問候,

微內核

PS:

1)我是C/C++程序員,如果你想知道。

2)這個限制開始糾纏我從我的學校時代。

回答

2

這樣的數據類型被稱爲任意精度數字。在Java中,有幾個類BigDecimalBigInteger,它們處理數字級別的基本操作(+, - ,*,/)。他們沒有「內置」尺寸限制。它們實際上並不那麼慢,並且在很多現實世界的領域中使用。

C/C++沒有它內置的,但也有很多圖書館在那裏。在這裏看到一個列表: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic#Libraries

+0

其實,任意精度的數字是非常標準型在大多數語言整數。像C,C++,Java,C#,Objective-C這樣的語言甚至不能正確地添加兩個整數,這真是個例外。 – 2010-10-29 21:18:54