今天遇到一個要處理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對大量的運算符都進行了重載,很方便使用。
(編輯:雷林鵬 來源:網絡)