zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    POJ3061(尺取法)
    POJ2739(尺取法)
    HDOJ4763(KMP原理理解)
    HDOJ5521(巧妙构建完全图)
    UVALive7261(2015ACM/ICPC北京赛区现场赛A)
    POJ1745动态规划
    POJ1273(最大流入门)
    HDOJ5883(欧拉路)
    HDOJ5437(优先队列)
    HDOJ5875(线段树)
  • 原文地址:https://www.cnblogs.com/cnsend/p/12846091.html
Copyright © 2011-2022 走看看