2009-08-19 24 views

回答

14

通過使用BigInteger類;在J#庫(絕對可以從C#訪問)中有一個,另一個在F#中(需要測試這個),並且在純C#中有獨立實現such as this one

+0

另外值得注意的是--DLR中還有另一個實現來支持Python和Ruby無限精度整數,但我還沒有看到該類的公共API是什麼。 – 2009-08-23 22:51:45

1

十進制有更大的範圍。

在.NET 4.0中支持bigInteger,但仍未達到測試版。

16

你可以使用.NET 4.0 beta嗎?如果是這樣,你可以使用BigInteger。否則,如果你堅持在28位數內,你可以使用decimal - 但要注意顯然這將執行十進制算術,所以你可能需要在各個地方進行四捨五入以補償。

+0

如果有人遇到命名空間問題,它在System.Numerics下; – Adrian 2017-11-25 11:33:38

1

有幾個使用大整數進行計算的庫,大多數的密碼庫也提供這樣的類。免費圖書館請參見this

0

您可以使用decimal。它大於Int64。

它有28到29位有效數字。

7

什麼是你想使用這些數字?如果你用大數字進行計算,你是否仍然需要精確到最後一位數字? 如果不是,則應考慮使用浮點值。它們可以是巨大的,雙重類型的最大值是1.79769313486231570E + 308,(如果您不習慣科學記數法,則意味着1.79769313486231570乘以10000000 ... 0000 --308個零)。

這應該足夠大,對於大多數應用

+0

令人驚訝的是,沒有人提到過,因爲OP沒有指定整數。 – 2012-07-31 18:57:02

3

BigInteger表示任意大的有符號整數。

using System.Numerics; 

var a = BigInteger.Parse("91389681247993671255432112000000"); 
var b = new BigInteger(1790322312); 
var c = a * b;