天天看點

[.NET開發] C# BigInteger 處理超大整型數字

  今天遇到一個要處理xsd中integer的數值區間的計算的問題,integer這個類型的值區間理論上是可沒有邊界的,假設目前的值是1.5e+10000, 這個數字已經達到double和int64都無法存儲了,同時我還要對如此大的數字進行加減運算,後來發現了biginteger這個類可以很好的解決我遇到的問題。^_^

  biginteger

  自.net framework 4.0開始引入, 位于命名空間:

  namespace system.numerics

  設計用于存儲超大整型數字,是以隻要記憶體夠大,存儲是沒有上限和下限的,否則如果數字過大的話,會遇到outofmemory的異常。

  我的案例

  因為我的輸入就是一個字元串的數字,是以我調用biginteger.parse()方法可以得到一個biginteger執行個體,然後就可以對于進行+1 或者 -1的運算了

  static void main(string[] args)

  {

  string largenum = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";

  var number = biginteger.parse(largenum);

  var numberdecreaseone = number - 1;

  var numberincreaseone = number + 1;

  console.writeline(numberdecreaseone);

  console.writeline(" ");

  console.writeline(numberincreaseone);

  console.readkey();

  }

  複制代碼

  輸出結果:

  biginteger還很很多的方法:比如 min, max, substract, multiply, divide, log, pow, 等等,同時biginteger對大量的運算符都進行了重載,很友善使用。

  (編輯:雷林鵬