C# BigInteger 處理超大整型數字


GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
http://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=612

 

微軟官方說明:

https://docs.microsoft.com/zh-cn/dotnet/api/system.numerics.biginteger?redirectedfrom=MSDN&view=netframework-4.7.2#適用於

 

適用於

.NET Core

3.0 Preview 2 2.2 2.1 2.0 1.1 1.0

.NET Framework

4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6

 

 

今天遇到一個要處理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對大量的運算符都進行了重載,很方便使用。

更多資料可以參看MSDN System.Numerics.BigInteger

 

GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
http://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=612


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM