溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C# BigInteger 處理超大整型數(shù)字

發(fā)布時(shí)間:2020-03-30 16:46:49 來源:網(wǎng)絡(luò) 閱讀:6541 作者:yuanzhitang 欄目:編程語言

今天遇到一個(gè)要處理XSD中Integer的數(shù)值區(qū)間的計(jì)算的問題,Integer這個(gè)類型的值區(qū)間理論上是可沒有邊界的,假設(shè)目前的值是1.5E+10000, 這個(gè)數(shù)字已經(jīng)達(dá)到double和Int64都無法存儲(chǔ)了,同時(shí)我還要對如此大的數(shù)字進(jìn)行加減運(yùn)算,后來發(fā)現(xiàn)了BigInteger這個(gè)類可以很好的解決我遇到的問題。^_^

BigInteger

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

namespace System.Numerics

設(shè)計(jì)用于存儲(chǔ)超大整型數(shù)字,所以只要內(nèi)存夠大,存儲(chǔ)是沒有上限和下限的,否則如果數(shù)字過大的話,會(huì)遇到OutOfMemory的異常。

我的案例

因?yàn)槲业妮斎刖褪且粋€(gè)字符串的數(shù)字,所以我調(diào)用BigInteger.Parse()方法可以得到一個(gè)BigInteger實(shí)例,然后就可以對于進(jìn)行+1 或者 -1的運(yùn)算了

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();

        }

輸出結(jié)果:

C# BigInteger 處理超大整型數(shù)字

BigInteger還很很多的方法:比如 Min, Max, Substract, Multiply, Divide, Log, Pow, 等等,同時(shí)BigInteger對大量的運(yùn)算符都進(jìn)行了重載,很方便使用。

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI