可能重複:
Most efficient implementation of a large number class如何處理龐大的數字?
想我需要計算2^15萬。顯然這個數字將超過int,float或double的大小。我怎樣才能創建一個允許普通數學函數但超過基本數字類型的數據類型?
如果這是一個「取決於您使用哪種語言」的交易。我會說C#。
可能重複:
Most efficient implementation of a large number class如何處理龐大的數字?
想我需要計算2^15萬。顯然這個數字將超過int,float或double的大小。我怎樣才能創建一個允許普通數學函數但超過基本數字類型的數據類型?
如果這是一個「取決於您使用哪種語言」的交易。我會說C#。
我最初嘗試搜索已存在的帖子,但沒有找到任何內容。 – 2008-11-07 22:41:06
幾種語言都支持任意大數字。例如,您可以使用Mathematica。我在Mathematica中嘗試了你的例子,結果有45,155位數字。我在Unix機器上嘗試了與bc
相同的例子。 bc支持擴展的精度,但不能擴展;它在這個例子上轟炸了。
我不知道C#,但我知道Ruby編程語言有BigDemical類,它似乎允許無限大小的數字。
Lisp是你的朋友。默認的biginteger數字。
我覺得使用沒有任意大數字的語言非常令人沮喪:在大多數數字上能夠使用普通運算符(如添加)似乎是無意義的,但僅僅因爲它的原因而必須切換到BigInt實例上的方法調用尺寸。
一大堆語言有更完整的數字塔,並在需要時無縫脅迫;例如,Allegro Common Lisp在1ms內評估並打印(實驗2 150000)的所有45,155位數字。
cl-user(2): (time (expt 2 150000))
; cpu time (non-gc) 0 msec user, 0 msec system
; cpu time (gc) 0 msec user, 0 msec system
; cpu time (total) 0 msec user, 0 msec system
; real time 1 msec
; space allocation:
; 2 cons cells, 18,784 other bytes, 0 static bytes
C中有一種產品叫calc,它是一個任意精度計算器。我用它作爲一次研究員工作時,發現它相當簡單使用...
http://sourceforge.net/projects/calc/
它可以通過編程對困難或長計算,並能接受來自命令行參數。在交互模式下,它一次接受一個命令,並顯示答案。
通常的命令是簡單地表述如:
3 * (4 + 1)
和calc將打印:
15
計算值確實算術運算符+, - ,/ *以及^(冪),%(模數)和//(整數除法)。
例如:
3 * 19^43 - 1
會產生:
29075426613099201338473141505176993450849249622191102976
計算值的值可能會非常大。例如:
2^23209 - 1
會打印:
402874115778988778181873329071 ... loads of digits ... 3779264511
希望這有助於...
Python有一個BIGNUM庫。如果你需要用另一種語言實現一個bignum庫,你至少可以使用Python作爲參考來驗證你的工作。請注意,如果您不知道自己要找什麼,bignums會有一些實施細節並不是很明顯。
您也可以考慮使用Frink,它是一種具有處理測量單位本機功能的語言。 它毫不費力地計算2^150000,處理分數(例如1/3 + 2/5 - > 11/15),計算3米+2英寸 - > 3.0508米,是一種完整的編程語言。
弗林克 - 版權所有2000-2008艾倫Eliasen,[email protected] http://futureboy.us/frinkdocs/
巨大.. :))。 – mlvljr 2012-01-02 07:50:41