C#BigInteger处理超大整型数字-创新互联-成都快上网建站

C#BigInteger处理超大整型数字-创新互联

今天遇到一个要处理XSD中Integer的数值区间的计算的问题,Integer这个类型的值区间理论上是可没有边界的,假设目前的值是1.5E+10000, 这个数字已经达到double和Int64都无法存储了,同时我还要对如此大的数字进行加减运算,后来发现了BigInteger这个类可以很好的解决我遇到的问题。^_^

创新互联公司主营新城网站建设的网络公司,主营网站建设方案,成都App定制开发,新城h5成都小程序开发搭建,新城网站营销推广欢迎新城等地区企业咨询

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

        }

输出结果:

C# BigInteger 处理超大整型数字

BigInteger还很很多的方法:比如 Min, Max, Substract, Multiply, Divide, Log, Pow, 等等,同时BigInteger对大量的运算符都进行了重载,很方便使用。

更多资料可以参看MSDN System.Numerics.BigInteger

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:C#BigInteger处理超大整型数字-创新互联
新闻来源:http://kswjz.com/article/hohid.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流