今天遇到一個要處理XSD中Integer的數(shù)值區(qū)間的計算的問題,Integer這個類型的值區(qū)間理論上是可沒有邊界的,假設目前的值是1.5E+10000, 這個數(shù)字已經(jīng)達到double和Int64都無法存儲了,同時我還要對如此大的數(shù)字進行加減運算,后來發(fā)現(xiàn)了BigInteger這個類可以很好的解決我遇到的問題。^_^
站在用戶的角度思考問題,與客戶深入溝通,找到東蘭網(wǎng)站設計與東蘭網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設計、成都做網(wǎng)站、外貿網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)站空間、企業(yè)郵箱。業(yè)務覆蓋東蘭地區(qū)。
自.net framework 4.0開始引入, 位于命名空間:
namespace System.Numerics
設計用于存儲超大整型數(shù)字,所以只要內存夠大,存儲是沒有上限和下限的,否則如果數(shù)字過大的話,會遇到OutOfMemory的異常。
因為我的輸入就是一個字符串的數(shù)字,所以我調用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對大量的運算符都進行了重載,很方便使用。
更多資料可以參看MSDN System.Numerics.BigInteger