示例#1
0
        public static List <BigAmount> GetBigAmountFromString(string input)
        {
            var bigAmounts = new List <BigAmount>();
            var size       = 9;
            int level      = 1;
            var strLength  = input.Length - 1;
            var done       = false;

            for (var i = strLength; i >= 0; i--)
            {
                if (done)
                {
                    break;
                }
                var bigAmount = new BigAmount()
                {
                    level = level,
                };
                for (var j = 0; j < size; j++)
                {
                    var currentIndex = strLength - (level - 1) * size - j;
                    if (currentIndex < 0)
                    {
                        done = true;
                        break;
                    }
                    bigAmount.Value = input[currentIndex] + bigAmount.Value;
                }
                level++;
                bigAmounts.Add(bigAmount);
            }

            return(bigAmounts);
        }
示例#2
0
        public static BigAmount Add(BigAmount bigA, BigAmount bigB)
        {
            var bigResult = new BigAmount();
            var addResult = GetIntValueFromString(bigA.Value) + GetIntValueFromString(bigB.Value);

            if (addResult > 1000000000)
            {
                addResult         -= 1000000000;
                bigResult.IsAddOne = true;
            }

            bigResult.Value = addResult.ToString();
            bigResult.level = string.IsNullOrEmpty(bigA.Value) ? bigB.level : bigA.level;
            return(bigResult);
        }