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